devzone 0.8.2 → 0.9.0

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.
@@ -11,6 +11,7 @@ set -euo pipefail
11
11
 
12
12
  ETAT="${DEVZONE_ETAT:-$HOME/.config/devzone/modules}"
13
13
  ICI="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" && pwd)"
14
+ VERSIONS="$ICI/../core/scripts/versions.sh"
14
15
  MODULES=(ia kubernetes)
15
16
 
16
17
  # Assistants IA, versions figées : mettre à jour ici, puis devzone appliquer
@@ -126,10 +127,30 @@ appliquer_kubernetes() {
126
127
  fi
127
128
  }
128
129
 
130
+ # Lignes « paquet figée installée » des outils en retard ; échoue si le script
131
+ # versions.sh est absent ou ne peut pas répondre (l'état omet alors la ligne)
132
+ outils_retard() {
133
+ [ -f "$VERSIONS" ] || return 1
134
+ bash "$VERSIONS" --installees 2>/dev/null
135
+ }
136
+
137
+ # Remet repowarden à la version figée s'il en diffère, comme post-create.sh
138
+ # (il installe les hooks git globaux)
139
+ appliquer_repowarden() {
140
+ local ligne figee installee
141
+ [ -f "$VERSIONS" ] || return 0
142
+ ligne="$(bash "$VERSIONS" --installees 2>/dev/null | awk '$1 == "repowarden"' || true)"
143
+ [ -n "$ligne" ] || return 0
144
+ read -r _ figee installee <<<"$ligne"
145
+ npm install -g "repowarden@$figee" >/dev/null
146
+ repowarden install --global --lang fr
147
+ echo "devzone : repowarden $installee → $figee"
148
+ }
149
+
129
150
  # État complet : ✔ prêt, ✖ nécessaire, ○ facultatif, ⚠ à corriger ; chaque
130
151
  # point à faire avec sa commande (affiché à chaque démarrage)
131
152
  etat() {
132
- local nom email statut m
153
+ local nom email statut m retards
133
154
  echo "devzone : état (devzone pour le réafficher)"
134
155
  nom="$(git config --get user.name || true)"
135
156
  email="$(git config --get user.email || true)"
@@ -146,6 +167,16 @@ etat() {
146
167
  else
147
168
  echo " ✔ GitHub connecté"
148
169
  fi
170
+ if retards="$(outils_retard)"; then
171
+ if [ -z "$retards" ]; then
172
+ echo " ✔ outils versions figées"
173
+ else
174
+ while read -r paquet figee installee; do
175
+ [ -n "$paquet" ] || continue
176
+ echo " ⚠ outils $paquet $installee installé, $figee figé : devzone appliquer"
177
+ done <<<"$retards"
178
+ fi
179
+ fi
149
180
  for m in "${MODULES[@]}"; do
150
181
  if [ "$(valeur "$m")" = on ]; then
151
182
  printf ' ✔ module %-10s actif : %s\n' "$m" "$(description "$m")"
@@ -170,6 +201,7 @@ case "${1:-}" in
170
201
  activer) changer on "${2:-}" ;;
171
202
  desactiver) changer off "${2:-}" ;;
172
203
  appliquer)
204
+ appliquer_repowarden
173
205
  [ "$(valeur ia)" = off ] || appliquer_ia on
174
206
  ;;
175
207
  actif)
@@ -4,6 +4,8 @@
4
4
  # une montée.
5
5
  # bash core/scripts/versions.sh
6
6
  # une ligne « paquet ancienne nouvelle » par paquet en retard, rien sinon
7
+ # bash core/scripts/versions.sh --installees
8
+ # une ligne « paquet figée installée » par outil installé en retard
7
9
  # bash core/scripts/versions.sh --appliquer <paquet> <version>
8
10
  # remplace cette version figée dans son fichier, rien d'autre
9
11
  # bash core/scripts/versions.sh --ticket-existant <paquet> <auteur>
@@ -70,6 +72,28 @@ lister() {
70
72
  done < <(figees)
71
73
  }
72
74
 
75
+ # Versions installées globalement (paquet version), lues en une seule fois ;
76
+ # échoue si npm ou jq ne répond pas (l'état omet alors la ligne)
77
+ installees() {
78
+ local json
79
+ json="$(npm ls -g --depth=0 --json 2>/dev/null || true)"
80
+ [ -n "$json" ] || return 1
81
+ printf '%s\n' "$json" | jq -r '.dependencies // {} | to_entries[] | "\(.key) \(.value.version)"'
82
+ }
83
+
84
+ # Une ligne « paquet figée installée » par outil installé dont la version
85
+ # diffère de la version figée ; un outil non installé n'est pas listé
86
+ comparer_installees() {
87
+ local paquet figee installee liste
88
+ liste="$(installees)"
89
+ while read -r paquet figee; do
90
+ [ -n "$paquet" ] || continue
91
+ installee="$(printf '%s\n' "$liste" | awk -v p="$paquet" '$1 == p { print $2; exit }')"
92
+ [ -n "$installee" ] || continue
93
+ [ "$installee" = "$figee" ] || echo "$paquet $figee $installee"
94
+ done < <(figees)
95
+ }
96
+
73
97
  # Affiche « numéro<TAB>titre » du ticket ouvert par $2 dont le titre commence
74
98
  # par « $1 », rien sinon : un ticket au même titre ouvert par un autre est ignoré.
75
99
  ticket_existant() {
@@ -124,19 +148,20 @@ appliquer() {
124
148
 
125
149
  case "${1:-}" in
126
150
  "") lister ;;
151
+ --installees) comparer_installees ;;
127
152
  --appliquer)
128
153
  [ "$#" -eq 3 ] ||
129
- { echo "usage : bash core/scripts/versions.sh [--appliquer <paquet> <version> | --ticket-existant <paquet> <auteur>]" >&2; exit 2; }
154
+ { echo "usage : bash core/scripts/versions.sh [--installees | --appliquer <paquet> <version> | --ticket-existant <paquet> <auteur>]" >&2; exit 2; }
130
155
  appliquer "$2" "$3"
131
156
  ;;
132
157
  --ticket-existant)
133
158
  [ "$#" -eq 3 ] ||
134
- { echo "usage : bash core/scripts/versions.sh [--appliquer <paquet> <version> | --ticket-existant <paquet> <auteur>]" >&2; exit 2; }
159
+ { echo "usage : bash core/scripts/versions.sh [--installees | --appliquer <paquet> <version> | --ticket-existant <paquet> <auteur>]" >&2; exit 2; }
135
160
  ticket_existant "$2" "$3"
136
161
  ;;
137
- -h | --help) sed -n '2,11p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' ;;
162
+ -h | --help) sed -n '2,17p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' ;;
138
163
  *)
139
- echo "usage : bash core/scripts/versions.sh [--appliquer <paquet> <version> | --ticket-existant <paquet> <auteur>]" >&2
164
+ echo "usage : bash core/scripts/versions.sh [--installees | --appliquer <paquet> <version> | --ticket-existant <paquet> <auteur>]" >&2
140
165
  exit 2
141
166
  ;;
142
167
  esac
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devzone",
3
- "version": "0.8.2",
3
+ "version": "0.9.0",
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": {