chat control
This commit is contained in:
parent
755d305e78
commit
5139937d27
@ -23,8 +23,8 @@ is_background: false
|
|||||||
- **Si OK :** Passer à l'étape 3.
|
- **Si OK :** Passer à l'étape 3.
|
||||||
|
|
||||||
3. **Lancer le script deploy-by-script-to** avec la branche en paramètre (`pprod` ou `prod`) :
|
3. **Lancer le script deploy-by-script-to** avec la branche en paramètre (`pprod` ou `prod`) :
|
||||||
- Commande : `cd /home/desk/code/lecoffre_ng_test && ./ia_dev/deploy/deploy-by-script-to.sh <pprod|prod>`
|
- Le script est lancé depuis **ia_dev** (comme les autres scripts), il s’applique au dépôt parent (`../`). Depuis la racine projet : `cd /home/desk/code/lecoffre_ng_test/ia_dev && ./deploy/deploy-by-script-to.sh <pprod|prod>` (ou depuis la racine : `./ia_dev/deploy/deploy-by-script-to.sh <pprod|prod>`).
|
||||||
- Le script fait : checkout sur la branche en paramètre, vérification que `.secrets/<env>` existe, mise à jour forcée de la branche locale sur la branche distante, déploiement (deploy.sh avec --import-v1 --skipSetupHost), checkout test.
|
- Le script fait : passage dans le dépôt parent, checkout sur la branche en paramètre, vérification que `.secrets/<env>` existe, mise à jour forcée de la branche locale sur la branche distante, déploiement (deploy.sh avec --import-v1 --skipSetupHost), checkout test.
|
||||||
- **Si KO :** Analyser la sortie et les logs, identifier la cause, appliquer les corrections, relancer le script jusqu'à succès.
|
- **Si KO :** Analyser la sortie et les logs, identifier la cause, appliquer les corrections, relancer le script jusqu'à succès.
|
||||||
- **Si OK :** Passer à l'étape 4.
|
- **Si OK :** Passer à l'étape 4.
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ is_background: false
|
|||||||
|
|
||||||
# Agent gitea-issues-process
|
# Agent gitea-issues-process
|
||||||
|
|
||||||
**Contexte projet :** La configuration et la documentation du projet sont dans `projects/<id>/` (chemin absolu : `/home/desk/code/lecoffre_ng_test/ia_dev/projects/<id>`). L'identifiant `<id>` vient du slug (contenu du fichier `../ai_project_id`). Rappeler ce chemin en début d'exécution.
|
**Contexte projet :** La configuration et la documentation du projet sont dans `projects/<id>/` ; `<id>` = contenu du fichier `../ai_project_id` (à la racine du dépôt projet, parent de ia_dev). Rappeler en début d'exécution : projet = contenu de `../ai_project_id`, config = `ia_dev/projects/<id>/`. Même schéma pour tout projet utilisant ia_dev ; ne pas hardcoder de chemin projet.
|
||||||
|
|
||||||
Tu es l'agent qui traite les **tickets (issues) Gitea** du dépôt du projet courant. Le dépôt et l'URL Gitea (ticketing, wiki) sont définis dans `projects/<slug>.json` (clé `git.ticketing_url`, `git.wiki_url`) ; le slug projet est donné par `.ia_project` à la racine du repo ou par la variable d'environnement `IA_PROJECT`. Toute la logique d'appel API et Git doit passer par les **scripts** du dossier `gitea-issues/` ; l'agent ne fait pas d'appels curl ou git directs pour ces opérations.
|
Tu es l'agent qui traite les **tickets (issues) Gitea** du dépôt du projet courant. Le dépôt et l'URL Gitea (ticketing, wiki) sont définis dans `projects/<slug>.json` (clé `git.ticketing_url`, `git.wiki_url`) ; le slug projet est donné par `.ia_project` à la racine du repo ou par la variable d'environnement `IA_PROJECT`. Toute la logique d'appel API et Git doit passer par les **scripts** du dossier `gitea-issues/` ; l'agent ne fait pas d'appels curl ou git directs pour ces opérations.
|
||||||
|
|
||||||
@ -21,24 +21,28 @@ Tu es l'agent qui traite les **tickets (issues) Gitea** du dépôt du projet cou
|
|||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
- `GITEA_TOKEN` défini ou fichier `.secrets/gitea-issues/token` présent.
|
- `GITEA_TOKEN` défini ou fichier `.secrets/gitea-issues/token` présent.
|
||||||
- Exécution depuis la **racine du dépôt projet** (chemin absolu) : `cd /home/desk/code/lecoffre_ng_test` puis invoquer les scripts `./ia_dev/gitea-issues/*.sh`. Ne pas exécuter depuis un autre répertoire.
|
- Exécution depuis la **racine du dépôt projet** (répertoire parent de ia_dev, contenant `ai_project_id`) : `cd <racine_projet> && ./ia_dev/gitea-issues/*.sh`. Depuis le workspace ia_dev, racine projet = `..`. Ne pas hardcoder le chemin d'un projet ; fonctionne pour tout projet configuré par `../ai_project_id`.
|
||||||
- Dépendances : `jq`, `curl` (les scripts les utilisent).
|
- Dépendances : `jq`, `curl` (les scripts les utilisent).
|
||||||
|
|
||||||
|
**Contexte** : `gitea-issues/` est dans ia_dev ; le projet est identifié par `../ai_project_id` ; la config est dans `ia_dev/projects/<id>/`. `.secrets` est sous ia_dev (`./.secrets`), indépendant du projet parent. Voir `gitea-issues/README.md` (Contexte d'exécution).
|
||||||
|
|
||||||
## Workflow (script au maximum)
|
## Workflow (script au maximum)
|
||||||
|
|
||||||
1. **Lister les issues**
|
1. **Lister les issues**
|
||||||
Exécuter `cd /home/desk/code/lecoffre_ng_test && ./ia_dev/gitea-issues/list-open-issues.sh --lines` pour obtenir la liste des issues ouvertes. Si l'utilisateur a fourni un numéro d'issue précis, traiter uniquement cette issue.
|
Exécuter depuis la racine du dépôt projet : `cd <racine_projet> && ./ia_dev/gitea-issues/list-open-issues.sh --lines` (depuis workspace ia_dev : `cd .. && ./ia_dev/gitea-issues/list-open-issues.sh --lines`). Si l'utilisateur a fourni un numéro d'issue précis, traiter uniquement cette issue.
|
||||||
|
|
||||||
2. **Pour chaque issue à traiter** (ou la seule ciblée) :
|
2. **Pour chaque issue à traiter** (ou la seule ciblée) :
|
||||||
- **Créer la branche** : `cd /home/desk/code/lecoffre_ng_test && ./ia_dev/gitea-issues/create-branch-for-issue.sh <issue_number> [base]` (base par défaut : `test`). Ne pas inventer de commande git ; utiliser uniquement ce script.
|
- **Créer la branche** : `cd <racine_projet> && ./ia_dev/gitea-issues/create-branch-for-issue.sh <issue_number> [base]` (base par défaut : `test`). Ne pas inventer de commande git ; utiliser uniquement ce script.
|
||||||
- **Récupérer le contenu du ticket** : `cd /home/desk/code/lecoffre_ng_test && ./ia_dev/gitea-issues/print-issue-prompt.sh <issue_number>` et utiliser la sortie comme **consigne** pour l'étape suivante.
|
- **Récupérer le contenu du ticket** : `cd <racine_projet> && ./ia_dev/gitea-issues/print-issue-prompt.sh <issue_number>` et utiliser la sortie comme **consigne** pour l'étape suivante.
|
||||||
- **Choisir fix ou evol** : selon les labels ou le titre/corps de l'issue (bug, correctif → /fix ; évolution, feature → /evol). En cas de doute, privilégier /evol.
|
- **Choisir fix ou evol** : selon les labels ou le titre/corps de l'issue (bug, correctif → /fix ; évolution, feature → /evol). En cas de doute, privilégier /evol.
|
||||||
- **Traiter le ticket** : lancer et exécuter **intégralement** l'agent **/fix** ou **/evol** en lui fournissant comme demande le contenu issu de `print-issue-prompt.sh` (titre + corps de l'issue).
|
- **Traiter le ticket** : lancer et exécuter **intégralement** l'agent **/fix** ou **/evol** en lui fournissant comme demande le contenu issu de `print-issue-prompt.sh` (titre + corps de l'issue).
|
||||||
- **Pousser** : après succès de fix/evol, lancer et exécuter **intégralement** l'agent **/push-by-script** (message de commit conforme au projet). Push direct sur la branche ; ne jamais créer de pull request.
|
- **Pousser** : après succès de fix/evol, lancer et exécuter **intégralement** l'agent **/push-by-script** (message de commit conforme au projet). Push direct sur la branche ; ne jamais créer de pull request.
|
||||||
- **Commenter l'issue (optionnel)** : exécuter `cd /home/desk/code/lecoffre_ng_test && ./ia_dev/gitea-issues/comment-issue.sh <issue_number> "Traitement effectué dans la branche issue/<num>. Commit poussé."` (ou message adapté).
|
- **Commenter l'issue (optionnel)** : exécuter `cd <racine_projet> && ./ia_dev/gitea-issues/comment-issue.sh <issue_number> "Traitement effectué dans la branche issue/<num>. Commit poussé."` (ou message adapté).
|
||||||
|
|
||||||
3. **Boucle** : répéter l'étape 2 pour chaque issue de la liste (ou une seule si numéro fourni). Ne pas traiter en parallèle : une issue après l'autre.
|
3. **Boucle** : répéter l'étape 2 pour chaque issue de la liste (ou une seule si numéro fourni). Ne pas traiter en parallèle : une issue après l'autre.
|
||||||
|
|
||||||
|
**Boucle récupération mails (depuis le chat)** : si l'utilisateur demande « Lance la boucle récupération emails, attend 1 min et relance, N itérations », exécuter depuis la racine du dépôt projet : `cd <racine_projet> && ./ia_dev/gitea-issues/agent-loop-chat-iterations.sh [N]` (depuis workspace ia_dev : `cd .. && ./ia_dev/gitea-issues/agent-loop-chat-iterations.sh [N]`). Pour N élevé (ex. 300), indiquer de lancer le script en terminal (tmux/screen) depuis la même racine. Au lancement le script envoie un mail de test à nicolas.cantu@pm.me ; les mails en attente sont dans `logs/gitea-issues/agent-loop.pending`. Traiter les mails selon le workflow (mail-get-thread, mail-thread-log, réponse ou issue, mail-mark-read). Voir `gitea-issues/AGENT_LOOP.md`.
|
||||||
|
|
||||||
## Contraintes
|
## Contraintes
|
||||||
|
|
||||||
- Ne pas appeler l'API Gitea ni exécuter des commandes git pour les issues en dehors des scripts `gitea-issues/*.sh`.
|
- Ne pas appeler l'API Gitea ni exécuter des commandes git pour les issues en dehors des scripts `gitea-issues/*.sh`.
|
||||||
|
|||||||
@ -1,29 +1,29 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# deploy-by-script-to <target_branch>: checkout target, verify .secrets/<env>, force sync with origin, deploy target, checkout test.
|
# deploy-by-script-to <target_branch>: checkout target, verify .secrets/<env>, force sync with origin, deploy target, checkout test.
|
||||||
# Centralized in ia_dev. Call after /change-to-all-branches (agent). Requires: start on branch test. Target: pprod | prod only.
|
# Launched from ia_dev (like other deploy scripts); applies to parent repo (../). Call after /change-to-all-branches (agent). Target: pprod | prod only.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
||||||
echo "[deploy-by-script-to][ERROR] Not in a git repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
PROJECT_ROOT="$(git rev-parse --show-toplevel)"
|
|
||||||
SCRIPT_REAL="$(readlink -f "${BASH_SOURCE[0]:-$0}" 2>/dev/null || realpath "${BASH_SOURCE[0]:-$0}" 2>/dev/null || echo "${BASH_SOURCE[0]:-$0}")"
|
SCRIPT_REAL="$(readlink -f "${BASH_SOURCE[0]:-$0}" 2>/dev/null || realpath "${BASH_SOURCE[0]:-$0}" 2>/dev/null || echo "${BASH_SOURCE[0]:-$0}")"
|
||||||
DEPLOY_IA="$(cd "$(dirname "$SCRIPT_REAL")" && pwd)"
|
DEPLOY_IA="$(cd "$(dirname "$SCRIPT_REAL")" && pwd)"
|
||||||
|
# Parent of ia_dev = project root (deploy applies to ../)
|
||||||
|
PROJECT_ROOT="$(cd "$DEPLOY_IA/../.." && pwd)"
|
||||||
if [[ "$(pwd)" != "$PROJECT_ROOT" ]]; then
|
if [[ "$(pwd)" != "$PROJECT_ROOT" ]]; then
|
||||||
cd "$PROJECT_ROOT" && exec "$SCRIPT_REAL" "$@"
|
cd "$PROJECT_ROOT" && exec "$SCRIPT_REAL" "$@"
|
||||||
fi
|
fi
|
||||||
|
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||||
|
echo "[deploy-by-script-to][ERROR] Not in a git repository (PROJECT_ROOT=${PROJECT_ROOT})" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
TARGET_BRANCH="${1:-}"
|
TARGET_BRANCH="${1:-}"
|
||||||
if [[ -z "$TARGET_BRANCH" ]]; then
|
if [[ -z "$TARGET_BRANCH" ]]; then
|
||||||
echo "[deploy-by-script-to][ERROR] Missing <target_branch> argument (expected: pprod | prod)" >&2
|
echo "[deploy-by-script-to][ERROR] Missing <target_branch> argument (expected: pprod | prod)" >&2
|
||||||
echo "Usage: ./ia_dev/deploy/deploy-by-script-to.sh <target_branch> (pprod or prod only)" >&2
|
echo "Usage: ./deploy/deploy-by-script-to.sh <target_branch> (from ia_dev; pprod or prod only)" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ ! "$TARGET_BRANCH" =~ ^(pprod|prod)$ ]]; then
|
if [[ ! "$TARGET_BRANCH" =~ ^(pprod|prod)$ ]]; then
|
||||||
echo "[deploy-by-script-to][ERROR] Invalid target branch: must be pprod or prod (got: '${TARGET_BRANCH}')" >&2
|
echo "[deploy-by-script-to][ERROR] Invalid target branch: must be pprod or prod (got: '${TARGET_BRANCH}')" >&2
|
||||||
echo "Usage: ./ia_dev/deploy/deploy-by-script-to.sh <pprod|prod>" >&2
|
echo "Usage: ./deploy/deploy-by-script-to.sh <pprod|prod>" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@ -111,3 +111,16 @@ nohup ./gitea-issues/agent-loop.sh 60 >> logs/gitea-issues/agent-loop.log 2>&1 &
|
|||||||
- Si lancé en arrière-plan : `kill <pid>` (ou `pkill -f agent-loop.sh`).
|
- Si lancé en arrière-plan : `kill <pid>` (ou `pkill -f agent-loop.sh`).
|
||||||
|
|
||||||
Après arrêt, le fichier témoin ne sera plus mis à jour ; après 2 × intervalle, il doit être considéré comme inactif.
|
Après arrêt, le fichier témoin ne sera plus mis à jour ; après 2 × intervalle, il doit être considéré comme inactif.
|
||||||
|
|
||||||
|
## Boucle limitée depuis le chat (sans API payante)
|
||||||
|
|
||||||
|
Pour lancer depuis **ce** chat (instance Cursor ouverte, abonnement Ultra) une boucle limitée : récupération des mails → attente 1 min → récupération → … sans consommer de crédits API ni lancer la CLI `agent` :
|
||||||
|
|
||||||
|
1. Demander dans le chat : *« Lance la boucle récupération emails : subagent puis attend 1 min et relance, N itérations »* (ou similaire).
|
||||||
|
2. L’agent exécute `cd /home/desk/code/lecoffre_ng_test && ./ia_dev/gitea-issues/agent-loop-chat-iterations.sh [N]` depuis la racine du dépôt projet. Par défaut N=3 ; pour 300 itérations, lancer en terminal (tmux/screen) depuis la même racine.
|
||||||
|
3. Au lancement, le script envoie un mail de test à nicolas.cantu@pm.me pour vérifier SMTP ; si l'envoi échoue, le script s'arrête (code 1).
|
||||||
|
4. Chaque itération exécute `mail-list-unread.sh` puis attend 60 secondes. Les mails en attente sont écrits dans `logs/gitea-issues/agent-loop.pending` ; traiter ensuite dans le même chat (workflow gitea-issues-process, voir `.cursor/agents/gitea-issues-process.md`).
|
||||||
|
|
||||||
|
**Pourquoi l'envoi pouvait échouer** : si le script était invoqué depuis la racine projet avec ROOT = toplevel Git (racine projet), le chemin `./gitea-issues/` n'existait pas (gitea-issues est dans ia_dev). Le script utilise maintenant le répertoire contenant gitea-issues (ia_dev) comme racine et appelle les sous-scripts via `GITEA_ISSUES_DIR`.
|
||||||
|
|
||||||
|
Script : `gitea-issues/agent-loop-chat-iterations.sh [N]`. Boucle illimitée en terminal : `cd <racine_projet> && while true; do ./ia_dev/gitea-issues/mail-list-unread.sh; sleep 60; done`.
|
||||||
|
|||||||
@ -2,6 +2,13 @@
|
|||||||
|
|
||||||
Dossier dédié au traitement des tickets (issues) Gitea du dépôt **4nk/lecoffre_ng** (https://git.4nkweb.com/4nk/lecoffre_ng/issues). Toute la logique d’appel API et Git est dans les scripts ; l’agent orchestre et appelle /fix ou /evol.
|
Dossier dédié au traitement des tickets (issues) Gitea du dépôt **4nk/lecoffre_ng** (https://git.4nkweb.com/4nk/lecoffre_ng/issues). Toute la logique d’appel API et Git est dans les scripts ; l’agent orchestre et appelle /fix ou /evol.
|
||||||
|
|
||||||
|
## Contexte d'exécution
|
||||||
|
|
||||||
|
- **Emplacement** : `gitea-issues/` est dans le sous-module **ia_dev** du dépôt projet. Chemin typique : `<racine_projet>/ia_dev/gitea-issues/`. Fonctionne pour tout projet utilisant ia_dev de la même manière.
|
||||||
|
- **Projet cible** : le projet est identifié **dynamiquement** par le fichier `../ai_project_id` (à la racine du dépôt projet, parent de `ia_dev`). Son contenu (slug) sert à charger la config dans `ia_dev/projects/<id>/`. Changer de projet = changer le dépôt (ou le contenu de `ai_project_id`) ; aucun chemin à hardcoder.
|
||||||
|
- **Lancement** : le chat Cursor et les scripts sont lancés depuis **ia_dev** (`<racine_projet>/ia_dev/`), mais les opérations (issues, mails, déploiement) concernent le dépôt **parent** (`../` = racine projet). Invoquer les scripts depuis la racine du dépôt projet : `cd <racine_projet> && ./ia_dev/gitea-issues/<script>.sh`. Depuis le workspace ia_dev, racine projet = `..`.
|
||||||
|
- **Secrets et logs** : `.secrets` est sous **ia_dev** (`ia_dev/.secrets`, soit `./.secrets` depuis ia_dev), et **ne dépend pas du projet parent**. Les scripts résolvent la racine pour `.secrets` et `logs` via le répertoire contenant `gitea-issues` (ia_dev), afin que la config IMAP/SMTP et les logs soient les mêmes quel que soit le projet ; un même clone ia_dev peut servir plusieurs projets configurés par `../ai_project_id`.
|
||||||
|
|
||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
- **jq** : `apt install jq` ou `brew install jq`
|
- **jq** : `apt install jq` ou `brew install jq`
|
||||||
|
|||||||
52
gitea-issues/agent-loop-chat-iterations.sh
Executable file
52
gitea-issues/agent-loop-chat-iterations.sh
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Bounded loop for chat: run mail retrieval N times, 1 minute between each.
|
||||||
|
# Use from Cursor chat when asked to "lance la boucle récupération emails puis attend 1 min et relance".
|
||||||
|
# Runs in foreground (no background); chat can run it for a few iterations to avoid timeout.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ./gitea-issues/agent-loop-chat-iterations.sh [N]
|
||||||
|
# N = number of iterations (default 3). Each iteration: mail-list-unread.sh then sleep 60.
|
||||||
|
#
|
||||||
|
# For unbounded loop, run in terminal: while true; do ./gitea-issues/mail-list-unread.sh; sleep 60; done
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
if [ -n "${HOME:-}" ] && [ -r "$HOME/.bashrc" ]; then
|
||||||
|
set +u
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$HOME/.bashrc" 2>/dev/null || true
|
||||||
|
set -u
|
||||||
|
fi
|
||||||
|
[ -n "${HOME:-}" ] && [ -d "$HOME/.local/bin" ] && export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
|
# Root = directory containing gitea-issues (ia_dev). Ensures scripts and .secrets are found
|
||||||
|
# whether this script is run from ia_dev or from project root (lecoffre_ng_test).
|
||||||
|
GITEA_ISSUES_DIR="${GITEA_ISSUES_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}"
|
||||||
|
ROOT="$(cd "${GITEA_ISSUES_DIR}/.." && pwd)"
|
||||||
|
export GITEA_ISSUES_DIR
|
||||||
|
export REPO_ROOT="${ROOT}"
|
||||||
|
cd "$ROOT"
|
||||||
|
|
||||||
|
N="${1:-3}"
|
||||||
|
if ! [[ "$N" =~ ^[0-9]+$ ]] || [ "$N" -lt 1 ]; then
|
||||||
|
echo "Usage: $0 [N] — N positive integer (default 3)." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test send at launch: one test email to nicolas.cantu@pm.me
|
||||||
|
echo "[agent-loop-chat] $(date -Iseconds) — test d'envoi vers nicolas.cantu@pm.me"
|
||||||
|
if "${GITEA_ISSUES_DIR}/mail-send-reply.sh" --to "nicolas.cantu@pm.me" --subject "Test envoi - agent-loop-chat $(date +%Y-%m-%dT%H:%M:%S)" --body "Mail de test envoyé au lancement de agent-loop-chat-iterations.sh." 2>&1; then
|
||||||
|
echo "[agent-loop-chat] $(date -Iseconds) — test d'envoi OK"
|
||||||
|
else
|
||||||
|
echo "[agent-loop-chat] $(date -Iseconds) — test d'envoi échoué" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in $(seq 1 "$N"); do
|
||||||
|
echo "[agent-loop-chat] $(date -Iseconds) — iteration $i/$N"
|
||||||
|
"${GITEA_ISSUES_DIR}/mail-list-unread.sh" 2>&1 || true
|
||||||
|
if [ "$i" -lt "$N" ]; then
|
||||||
|
echo "[agent-loop-chat] $(date -Iseconds) — attente 60 s avant prochaine itération"
|
||||||
|
sleep 60
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "[agent-loop-chat] $(date -Iseconds) — $N itérations terminées"
|
||||||
@ -13,7 +13,8 @@ from urllib.request import Request, urlopen
|
|||||||
|
|
||||||
|
|
||||||
def repo_root() -> Path:
|
def repo_root() -> Path:
|
||||||
# When set by shell (e.g. when gitea-issues is inside ia_dev), use host repo root for .secrets, logs
|
# Root = directory containing gitea-issues (ia_dev). .secrets and logs live under ia_dev (./.secrets, ./logs)
|
||||||
|
# so they do not depend on the parent project; same ia_dev works for any project (../ai_project_id).
|
||||||
env_root = os.environ.get("REPO_ROOT")
|
env_root = os.environ.get("REPO_ROOT")
|
||||||
if env_root:
|
if env_root:
|
||||||
return Path(env_root).resolve()
|
return Path(env_root).resolve()
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
"id": "ia_dev",
|
"id": "ia_dev",
|
||||||
"name": "ia_dev",
|
"name": "ia_dev",
|
||||||
"project_path": "../",
|
"project_path": "../",
|
||||||
|
"base_path": "ia_dev",
|
||||||
"build_dirs": [],
|
"build_dirs": [],
|
||||||
"deploy": {},
|
"deploy": {},
|
||||||
"version": {
|
"version": {
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
"id": "lecoffreio",
|
"id": "lecoffreio",
|
||||||
"name": "Lecoffre.io",
|
"name": "Lecoffre.io",
|
||||||
"project_path": "../",
|
"project_path": "../",
|
||||||
|
"base_path": "lecoffre_ng_test",
|
||||||
"build_dirs": [
|
"build_dirs": [
|
||||||
"lecoffre-ressources-dev",
|
"lecoffre-ressources-dev",
|
||||||
"lecoffre-back-main",
|
"lecoffre-back-main",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user