devzone 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,9 +106,51 @@ config_opencode() {
106
106
  fi
107
107
  }
108
108
 
109
+ # Lance une commande longue en écrivant « toujours en cours » toutes les
110
+ # DEVZONE_PROGRESSION s sur stderr : une installation muette semble bloquée (#195)
111
+ avec_progression() {
112
+ local pas="${DEVZONE_PROGRESSION:-30}" ecoule=0 pid code=0
113
+ "$@" &
114
+ pid=$!
115
+ while kill -0 "$pid" 2>/dev/null; do
116
+ sleep 1
117
+ ecoule=$((ecoule + 1))
118
+ if [ $((ecoule % pas)) -eq 0 ] && kill -0 "$pid" 2>/dev/null; then
119
+ echo "devzone : … toujours en cours (${ecoule} s)" >&2
120
+ fi
121
+ done
122
+ wait "$pid" || code=$?
123
+ return "$code"
124
+ }
125
+
126
+ # Fichier qui marque un module actif en échec (contenu : où regarder) ; à côté
127
+ # de l'état, dans son volume : l'état l'affiche à chaque démarrage
128
+ fichier_echec() {
129
+ echo "$ETAT-echec-$1"
130
+ }
131
+
132
+ # Journal du dernier npm (son chemin est à donner en cas d'échec), ou son
133
+ # dossier ; noms horodatés : le dernier dans l'ordre du glob est le plus récent
134
+ dernier_journal_npm() {
135
+ local journal="" f
136
+ for f in "$HOME"/.npm/_logs/*-debug-0.log; do
137
+ if [ -f "$f" ]; then journal="$f"; fi
138
+ done
139
+ echo "${journal:-$HOME/.npm/_logs}"
140
+ }
141
+
109
142
  appliquer_ia() {
143
+ local journal
110
144
  if [ "$1" = on ]; then
111
- npm install -g --no-fund --no-audit --loglevel=error "${IA_PAQUETS[@]}" >/dev/null
145
+ echo "devzone : installation de Claude Code et opencode (quelques minutes)…"
146
+ if ! avec_progression npm install -g --no-fund --no-audit --loglevel=error "${IA_PAQUETS[@]}" >/dev/null; then
147
+ journal="$(dernier_journal_npm)"
148
+ echo "journal npm : $journal" >"$(fichier_echec ia)"
149
+ echo "devzone : échec de l'installation de ${IA_PAQUETS[*]} (npm install -g) ; journal npm : $journal ; réessayer : devzone appliquer" >&2
150
+ return 1
151
+ fi
152
+ rm -f "$(fichier_echec ia)"
153
+ echo "devzone : Claude Code et opencode installés"
112
154
  # Garde-fou repowarden (hook PreToolUse de Claude Code, plugin opencode) :
113
155
  # agent arrêté avant de modifier main/develop, de commiter sans
114
156
  # repowarden cc ou de contourner les hooks. Global, dans les volumes
@@ -122,6 +164,7 @@ appliquer_ia() {
122
164
  echo "devzone : ia actif : claude (puis /login), opencode auth login"
123
165
  else
124
166
  npm uninstall -g "${IA_NOMS[@]}" >/dev/null 2>&1 || true
167
+ rm -f "$(fichier_echec ia)"
125
168
  echo "devzone : ia désactivé (connexions gardées dans leurs volumes)"
126
169
  fi
127
170
  }
@@ -150,6 +193,7 @@ appliquer_repowarden() {
150
193
  ligne="$(bash "$VERSIONS" --installees 2>/dev/null | awk '$1 == "repowarden"' || true)"
151
194
  [ -n "$ligne" ] || return 0
152
195
  read -r _ figee installee <<<"$ligne"
196
+ echo "devzone : installation de repowarden $figee…"
153
197
  npm install -g "repowarden@$figee" >/dev/null
154
198
  repowarden install --global --lang fr
155
199
  echo "devzone : repowarden $installee → $figee"
@@ -210,7 +254,9 @@ etat() {
210
254
  echo " ⚠ worktree $chemin absent ici (créé hors du conteneur ?) : le gérer de ce côté-là, jamais git worktree prune ici (docs/reference.md, Worktrees git)"
211
255
  done < <(worktrees_absents)
212
256
  for m in "${MODULES[@]}"; do
213
- if [ "$(valeur "$m")" = on ]; then
257
+ if [ "$(valeur "$m")" = on ] && [ -f "$(fichier_echec "$m")" ]; then
258
+ printf ' ✖ module %-10s en échec : installation incomplète (%s) : devzone appliquer\n' "$m" "$(cat "$(fichier_echec "$m")")"
259
+ elif [ "$(valeur "$m")" = on ]; then
214
260
  printf ' ✔ module %-10s actif : %s\n' "$m" "$(description "$m")"
215
261
  else
216
262
  printf ' ○ module %-10s facultatif, %s : devzone activer %s\n' "$m" "$(description "$m")" "$m"
@@ -46,13 +46,16 @@ git config --global url.https://github.com/.insteadOf git@github.com:
46
46
 
47
47
  # repowarden, version figée (il installe des hooks git globaux) ; mettre à jour
48
48
  # en changeant la version ici, puis Rebuild Container
49
+ echo "devzone : installation de repowarden…"
49
50
  npm install -g repowarden@4.12.1
50
51
  repowarden install --global --lang fr
51
52
 
52
53
  # Modules facultatifs (assistants IA, Kubernetes) : commande devzone, état
53
- # gardé dans le volume devzone-config ; installe ce qui est actif
54
+ # gardé dans le volume devzone-config ; installe ce qui est actif. Un module
55
+ # en échec n'arrête pas la création : le conteneur reste utilisable et l'état
56
+ # (devzone, à chaque démarrage) le montre « en échec »
54
57
  sudo ln -sf /workspaces/devzone/.devcontainer/devzone /usr/local/bin/devzone
55
- devzone appliquer
58
+ devzone appliquer || echo "devzone : modules incomplets (détail ci-dessus), réessayer : devzone appliquer" >&2
56
59
 
57
60
  # Ce qui reste à faire (identité git, GitHub, modules) : récapitulatif de
58
61
  # devzone, affiché à chaque démarrage (demarrage.sh)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devzone",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Zone de dev conteneurisée : Java, Node, Python, Docker, Kubernetes et outils repowarden, dans un devcontainer",
5
5
  "license": "GPL-3.0-only",
6
6
  "repository": {