80 lines
2.8 KiB
Bash
80 lines
2.8 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
# Some terminals encourage invoking scripts with `sh script.sh`, which makes
|
||
# POSIX sh ignore the Bash shebang. Re-enter Bash before any Bash-only syntax
|
||
# is parsed so that invocation remains safe and predictable.
|
||
if [ -z "${BASH_VERSION:-}" ]; then
|
||
exec bash "$0" "$@"
|
||
fi
|
||
|
||
set -Eeuo pipefail
|
||
|
||
BASE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
||
usage() {
|
||
cat <<'EOF'
|
||
Usage: ./repair-rpi-with-codex.sh
|
||
|
||
Lance une session Codex interactive et isolée pour diagnostiquer le Raspberry
|
||
Pi et préparer une correction. Les modifications de code sont réalisées dans
|
||
un worktree Git dédié. Toute action sur le système, Docker, les montages, le
|
||
réseau ou les services doit rester soumise à une approbation humaine.
|
||
EOF
|
||
}
|
||
|
||
case "${1:-}" in
|
||
"") ;;
|
||
-h|--help) usage; exit 0 ;;
|
||
*) usage >&2; exit 2 ;;
|
||
esac
|
||
|
||
if [[ "${EUID:-$(id -u)}" -eq 0 ]]; then
|
||
echo "Ne lancez pas ce script avec sudo." >&2
|
||
exit 2
|
||
fi
|
||
command -v codex >/dev/null 2>&1 || {
|
||
echo "Codex CLI est introuvable dans PATH." >&2
|
||
exit 127
|
||
}
|
||
command -v git >/dev/null 2>&1 || {
|
||
echo "Git est requis pour créer le worktree isolé." >&2
|
||
exit 127
|
||
}
|
||
git -C "$BASE" rev-parse --is-inside-work-tree >/dev/null 2>&1 || {
|
||
echo "Le dossier CodexPi n’est pas un dépôt Git." >&2
|
||
exit 2
|
||
}
|
||
|
||
read -r -d '' PROMPT <<'EOF' || true
|
||
Tu es l’agent Pi Doctor chargé de diagnostiquer un Raspberry Pi 5 sous DietPi.
|
||
|
||
Commence uniquement par des contrôles en lecture seule : état systemd, erreurs
|
||
récentes du journal, mémoire, disque, température, montages CIFS, réseau et
|
||
conteneurs Docker. Utilise aussi ./scripts/repair.sh --check pour CodexPi quand
|
||
il est pertinent. Ne copie jamais de cookie, jeton, clé, mot de passe, contenu
|
||
de .env ou autre secret dans la conversation ou les journaux.
|
||
|
||
Tu travailles dans un worktree Git isolé. Tu peux corriger les fichiers de
|
||
CodexPi dans ce worktree et exécuter leurs tests. Ne modifie pas la production,
|
||
les données persistantes, NASFLIX, Jellyfin, le reverse proxy QNAP, SSH, le
|
||
pare-feu, les montages ou les services sans présenter d’abord : le diagnostic,
|
||
les preuves, le niveau de confiance, les commandes exactes, les risques, la
|
||
sauvegarde et le retour arrière. Attends ensuite une approbation explicite dans
|
||
la session avant chaque intervention système.
|
||
|
||
N’utilise jamais sudo automatiquement, ne redémarre pas la machine et ne lance
|
||
aucune commande destructive. Si une intervention dépasse le sandbox, demande
|
||
l’approbation au lieu de contourner la protection. Termine par un rapport qui
|
||
distingue clairement diagnostic, corrections de code testées, actions système
|
||
approuvées et problèmes encore bloqués.
|
||
EOF
|
||
|
||
exec codex \
|
||
-C "$BASE" \
|
||
--enable worktrees \
|
||
--worktree \
|
||
--sandbox workspace-write \
|
||
--ask-for-approval on-request \
|
||
--no-alt-screen \
|
||
"$PROMPT"
|