env: add ensure_env.sh; run.sh sources ~/.4nk_template/.env; docs: document local env management
This commit is contained in:
parent
2dc03071c8
commit
d4b15a0752
@ -17,6 +17,15 @@
|
|||||||
- bash requis (job CI `bash-required`)
|
- bash requis (job CI `bash-required`)
|
||||||
- Fallback PowerShell utilisable localement
|
- 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
|
## Lints Markdown
|
||||||
|
|
||||||
- Configuration: `.markdownlint.json` (MD013 à 200 colonnes, MD024 en siblings_only)
|
- Configuration: `.markdownlint.json` (MD013 à 200 colonnes, MD024 en siblings_only)
|
||||||
|
@ -27,4 +27,3 @@
|
|||||||
- Branche dédiée, PR petite et ciblée
|
- Branche dédiée, PR petite et ciblée
|
||||||
- CI verte, review approuvée
|
- CI verte, review approuvée
|
||||||
- Doc et changelog à jour
|
- Doc et changelog à jour
|
||||||
|
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
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)"
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
TARGET_DIR="${1:-.}"
|
TARGET_DIR="${1:-.}"
|
||||||
OUTPUT_DIR="${2:-tests/reports/agents}"
|
OUTPUT_DIR="${2:-tests/reports/agents}"
|
||||||
|
42
scripts/env/ensure_env.sh
vendored
Normal file
42
scripts/env/ensure_env.sh
vendored
Normal 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
|
Loading…
x
Reference in New Issue
Block a user