env: add ensure_env.sh; run.sh sources ~/.4nk_template/.env; docs: document local env management

This commit is contained in:
Nicolas Cantu 2025-08-27 22:56:14 +02:00
parent 2dc03071c8
commit d4b15a0752
4 changed files with 59 additions and 1 deletions

View File

@ -17,6 +17,15 @@
- bash requis (job CI `bash-required`)
- Fallback PowerShell utilisable localement
## Gestion locale des secrets (~/.4nk_template/.env)
- Modèle fourni: `scripts/env/.env.template` (clés sans valeurs)
- Provisionnement automatique: `scripts/env/ensure_env.sh`
- crée `~/.4nk_template/` (chmod 700) et `~/.4nk_template/.env` (chmod 600) si absent
- copie depuis le template puis demande de compléter
- vérifie les variables essentielles (ex: OPENAI_API_KEY, OPENAI_MODEL)
- Chargement automatique: `scripts/agents/run.sh` source `~/.4nk_template/.env` si présent
## Lints Markdown
- Configuration: `.markdownlint.json` (MD013 à 200 colonnes, MD024 en siblings_only)

View File

@ -27,4 +27,3 @@
- Branche dédiée, PR petite et ciblée
- CI verte, review approuvée
- Doc et changelog à jour

View File

@ -1,6 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
# Chargement env utilisateur (~/.4nk_template/.env)
"$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true
if [[ -f "${HOME}/.4nk_template/.env" ]]; then
set -a
. "${HOME}/.4nk_template/.env"
set +a
fi
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_DIR="${1:-.}"
OUTPUT_DIR="${2:-tests/reports/agents}"

42
scripts/env/ensure_env.sh vendored Normal file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
set -euo pipefail
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
TEMPLATE_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.env.template"
ENV_DIR="${HOME}/.4nk_template"
ENV_FILE="${ENV_DIR}/.env"
mkdir -p "${ENV_DIR}"
chmod 700 "${ENV_DIR}" || true
if [[ ! -f "${ENV_FILE}" ]]; then
if [[ -f "${TEMPLATE_FILE}" ]]; then
cp "${TEMPLATE_FILE}" "${ENV_FILE}"
chmod 600 "${ENV_FILE}" || true
echo "Fichier d'environnement créé: ${ENV_FILE}" >&2
echo "Veuillez renseigner les variables requises (OPENAI_API_KEY, OPENAI_MODEL, etc.)." >&2
exit 3
else
echo "Modèle d'environnement introuvable: ${TEMPLATE_FILE}" >&2
exit 2
fi
fi
# Charger pour validation
set -a
. "${ENV_FILE}"
set +a
MISSING=()
for var in OPENAI_API_KEY OPENAI_MODEL; do
if [[ -z "${!var:-}" ]]; then
MISSING+=("$var")
fi
done
if (( ${#MISSING[@]} > 0 )); then
echo "Variables manquantes dans ${ENV_FILE}: ${MISSING[*]}" >&2
exit 4
fi
echo "Environnement valide: ${ENV_FILE}" >&2