create codex configuration

This commit is contained in:
2026-04-21 12:44:32 +10:00
parent dd489aba0c
commit b3ebf4a596
5 changed files with 324 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
#!/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
echo "=== codex doctor ==="
echo "repo: $(pwd)"
echo "time: $(date -u +%FT%TZ)"
echo
echo "--- tools ---"
for cmd in bash git python3 docker; do
if have "$cmd"; then
echo "$cmd: $(command -v "$cmd")"
else
echo "$cmd: MISSING"
fi
done
echo
echo "--- repo ---"
[[ -f services-up.sh ]] && echo "services-up.sh: present" || echo "services-up.sh: missing"
[[ -d core ]] && echo "core/: present" || true
[[ -d apps ]] && echo "apps/: present" || true
[[ -d monitoring ]] && echo "monitoring/: present" || true
echo
echo "--- git status ---"
git status --short || true
echo
if have docker && docker compose version >/dev/null 2>&1; then
echo "--- docker compose ---"
docker compose version || true
fi
Executable
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env bash
set -euo pipefail
log() {
printf '[codex] %s\n' "$*"
}
warn() {
printf '[codex][warn] %s\n' "$*" >&2
}
die() {
printf '[codex][error] %s\n' "$*" >&2
exit 1
}
have() {
command -v "$1" >/dev/null 2>&1
}
repo_root() {
git rev-parse --show-toplevel 2>/dev/null || pwd
}
cd_repo_root() {
cd "$(repo_root)"
}
ensure_file() {
local path="$1"
[[ -f "$path" ]] || die "Required file not found: $path"
}
ensure_dir() {
local path="$1"
mkdir -p "$path"
}
append_if_missing() {
local line="$1"
local file="$2"
touch "$file"
grep -Fqx "$line" "$file" || printf '%s\n' "$line" >> "$file"
}
+86
View File
@@ -0,0 +1,86 @@
#!/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"
Executable
+86
View File
@@ -0,0 +1,86 @@
#!/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"