Archived
87 lines
2.1 KiB
Bash
Executable File
87 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# shellcheck source=./lib.sh
|
|
source "$SCRIPT_DIR/lib.sh"
|
|
|
|
cd_repo_root
|
|
|
|
log "Starting Codex environment setup in $(pwd)"
|
|
|
|
if ! have git; then
|
|
die "git is required"
|
|
fi
|
|
|
|
if ! have bash; then
|
|
die "bash is required"
|
|
fi
|
|
|
|
# Keep all Codex-local state inside the repo or user home.
|
|
ensure_dir .codex
|
|
ensure_dir .codex/bin
|
|
ensure_dir .codex/cache
|
|
ensure_dir .codex/tmp
|
|
ensure_dir .codex/logs
|
|
|
|
# Useful environment defaults for repeatable non-interactive runs.
|
|
cat > .codex/env <<'EOF'
|
|
export CI=1
|
|
export TERM=xterm-256color
|
|
export PYTHONDONTWRITEBYTECODE=1
|
|
export PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
export PIP_NO_INPUT=1
|
|
export GIT_PAGER=cat
|
|
EOF
|
|
|
|
# Optional Python venv for helper tooling.
|
|
if have python3; then
|
|
log "python3 detected"
|
|
if [[ ! -d .codex/venv ]]; then
|
|
python3 -m venv .codex/venv
|
|
fi
|
|
# shellcheck disable=SC1091
|
|
source .codex/venv/bin/activate
|
|
python -m pip install --upgrade pip setuptools wheel >/dev/null
|
|
|
|
# Install only lightweight tooling that is broadly useful.
|
|
python -m pip install \
|
|
pyyaml \
|
|
requests \
|
|
jinja2 \
|
|
>/dev/null
|
|
else
|
|
warn "python3 not found; skipping virtualenv setup"
|
|
fi
|
|
|
|
# Basic repo checks based on your environment style.
|
|
if [[ -f services-up.sh ]]; then
|
|
log "Found services-up.sh"
|
|
chmod +x services-up.sh || true
|
|
else
|
|
warn "services-up.sh not found at repo root"
|
|
fi
|
|
|
|
# Make codex scripts executable.
|
|
find codex -maxdepth 1 -type f -name '*.sh' -exec chmod +x {} +
|
|
|
|
# Create a simple local ignore file for Codex-generated junk if needed.
|
|
touch .git/info/exclude
|
|
append_if_missing ".codex/" .git/info/exclude
|
|
append_if_missing ".pytest_cache/" .git/info/exclude
|
|
append_if_missing "__pycache__/" .git/info/exclude
|
|
|
|
# Helpful summary file for Codex tasks.
|
|
cat > .codex/README.md <<'EOF'
|
|
This directory contains local, disposable Codex environment state.
|
|
|
|
Contents:
|
|
- env: shell exports for non-interactive work
|
|
- venv: optional Python virtual environment
|
|
- cache/: tool cache
|
|
- tmp/: temporary files
|
|
- logs/: script logs
|
|
EOF
|
|
|
|
log "Setup complete"
|