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.
package/.devcontainer/devzone
CHANGED
|
@@ -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
|
-
|
|
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