devzone 0.5.5 → 0.6.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.
- package/.devcontainer/Dockerfile +3 -2
- package/.devcontainer/devzone +9 -0
- package/.devcontainer/post-create.sh +1 -1
- package/.gitattributes +1 -1
- package/Makefile +6 -6
- package/README.md +81 -231
- package/{bin → core}/devzone +17 -7
- package/{desinstaller.sh → core/scripts/desinstaller.sh} +3 -1
- package/{lancer.sh → core/scripts/lancer.sh} +3 -3
- package/package.json +4 -5
package/.devcontainer/Dockerfile
CHANGED
|
@@ -21,9 +21,10 @@ ARG PYTEST_VERSION=9.1.1
|
|
|
21
21
|
|
|
22
22
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
23
23
|
|
|
24
|
-
# Contrôles shell de repowarden
|
|
24
|
+
# Contrôles shell de repowarden ; jq : lu par son garde-fou des agents IA
|
|
25
|
+
# (repowarden garde, module ia), qui sans lui ne vérifie rien
|
|
25
26
|
RUN apt-get update \
|
|
26
|
-
&& apt-get install -y --no-install-recommends shellcheck bats \
|
|
27
|
+
&& apt-get install -y --no-install-recommends shellcheck bats jq \
|
|
27
28
|
&& rm -rf /var/lib/apt/lists/*
|
|
28
29
|
|
|
29
30
|
# k9s, actionlint (mêmes versions que la CI de repowarden), gitleaks, kind :
|
package/.devcontainer/devzone
CHANGED
|
@@ -64,6 +64,15 @@ ecrire() {
|
|
|
64
64
|
appliquer_ia() {
|
|
65
65
|
if [ "$1" = on ]; then
|
|
66
66
|
npm install -g --no-fund --no-audit --loglevel=error "${IA_PAQUETS[@]}" >/dev/null
|
|
67
|
+
# Garde-fou repowarden (hook PreToolUse de Claude Code, plugin opencode) :
|
|
68
|
+
# agent arrêté avant de modifier main/develop, de commiter sans
|
|
69
|
+
# repowarden cc ou de contourner les hooks. Global, dans les volumes
|
|
70
|
+
# ~/.claude et ~/.config/opencode : gardé aux rebuilds ; relancé, rien ne change
|
|
71
|
+
if command -v repowarden >/dev/null 2>&1 && repowarden agents init --global >/dev/null 2>&1; then
|
|
72
|
+
echo "devzone : garde-fou repowarden actif pour Claude Code et opencode"
|
|
73
|
+
else
|
|
74
|
+
echo "devzone : garde-fou repowarden non branché (repowarden 4.10 ou plus requis) : repowarden agents init --global" >&2
|
|
75
|
+
fi
|
|
67
76
|
echo "devzone : ia actif : claude (puis /login), opencode auth login"
|
|
68
77
|
else
|
|
69
78
|
npm uninstall -g "${IA_NOMS[@]}" >/dev/null 2>&1 || true
|
|
@@ -46,7 +46,7 @@ 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
|
-
npm install -g repowarden@4.
|
|
49
|
+
npm install -g repowarden@4.10.0
|
|
50
50
|
repowarden install --global --lang fr
|
|
51
51
|
|
|
52
52
|
# Modules facultatifs (assistants IA, Kubernetes) : commande devzone, état
|
package/.gitattributes
CHANGED
package/Makefile
CHANGED
|
@@ -19,9 +19,9 @@ help: ## Liste les commandes
|
|
|
19
19
|
@grep -E '^[a-z-]+:.*## ' $(MAKEFILE_LIST) | awk -F':.*## ' '{printf " make %-16s %s\n", $$1, $$2}'
|
|
20
20
|
|
|
21
21
|
# up et rebuild : étapes affichées, journal complet dans .devzone.log, question
|
|
22
|
-
# posée dans le conteneur signalée au lieu d'attendre (lancer.sh)
|
|
22
|
+
# posée dans le conteneur signalée au lieu d'attendre (core/scripts/lancer.sh)
|
|
23
23
|
up: hors-conteneur ## Lance le conteneur (le crée si absent)
|
|
24
|
-
@bash lancer.sh up "$(CURDIR)"
|
|
24
|
+
@bash core/scripts/lancer.sh up "$(CURDIR)"
|
|
25
25
|
|
|
26
26
|
shell: hors-conteneur up ## Ouvre un shell dans le conteneur
|
|
27
27
|
@$(DC) exec $(WS) bash
|
|
@@ -35,16 +35,16 @@ down: hors-conteneur ## Supprime le conteneur (volumes, image et Docker interne
|
|
|
35
35
|
docker rm -f $$ids >/dev/null && echo "devzone supprimé (désinstallation complète : make desinstaller)"; fi
|
|
36
36
|
|
|
37
37
|
rebuild: hors-conteneur ## Reconstruit de zéro (après modif de .devcontainer/)
|
|
38
|
-
@bash lancer.sh rebuild "$(CURDIR)"
|
|
38
|
+
@bash core/scripts/lancer.sh rebuild "$(CURDIR)"
|
|
39
39
|
|
|
40
40
|
status: hors-conteneur ## État du conteneur
|
|
41
41
|
@docker ps -a $(FILTRE) --format '{{.Status}}' | grep . || echo "aucun conteneur"
|
|
42
42
|
|
|
43
43
|
test-fonctionnel: hors-conteneur ## Tests fonctionnels : devzone isolé, construit puis supprimé (5 à 10 min)
|
|
44
|
-
@bash test/fonctionnel.sh
|
|
44
|
+
@bash core/test/fonctionnel.sh
|
|
45
45
|
|
|
46
46
|
test-cli: hors-conteneur ## Tests de la CLI dans un vrai terminal : devzone isolé, puis supprimé (10 à 15 min)
|
|
47
|
-
@bash test/cli-terminal.sh
|
|
47
|
+
@bash core/test/cli-terminal.sh
|
|
48
48
|
|
|
49
49
|
desinstaller: hors-conteneur ## Supprime tout ce que devzone a créé, après confirmation (GARDER=connexions : garde les connexions)
|
|
50
|
-
@GARDER="$(GARDER)" bash desinstaller.sh
|
|
50
|
+
@GARDER="$(GARDER)" bash core/scripts/desinstaller.sh
|
package/README.md
CHANGED
|
@@ -1,34 +1,45 @@
|
|
|
1
1
|
# devzone
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/devzone) [](LICENSE)
|
|
3
|
+
[](https://www.npmjs.com/package/devzone) [](https://github.com/SimBienvenueHoulBoumi/devzone/blob/main/LICENSE)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
devzone est un environnement de développement prêt en une commande : Java, Node, Python, Docker et Kubernetes dans un conteneur, identique sur Mac, Linux et Windows. Il s'adresse à toute personne qui souhaite développer sans installer d'outils sur sa machine, avec les mêmes versions pour toute l'équipe.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|---|---|
|
|
9
|
-
| Langages | Java 21 + Maven, Node LTS + pnpm, Python 3.12 + uv |
|
|
10
|
-
| Conteneurs, Kubernetes | Docker (Docker-in-Docker), kubectl, helm, k9s, kind ; connexion au cluster de l'hôte : [module](#modules) `kubernetes` |
|
|
11
|
-
| GitHub, qualité | gh, repowarden (hooks git globaux), shellcheck, bats, actionlint, gitleaks, ruff, vulture, pytest |
|
|
12
|
-
| Assistants IA | Claude Code, opencode : [module](#modules) `ia`, désactivé par défaut |
|
|
7
|
+
## Pourquoi devzone ?
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
- **Rien à installer à part Docker** : tout le reste tourne dans un conteneur.
|
|
10
|
+
- **Mêmes outils et mêmes versions** pour toute l'équipe, sur Mac, Linux et Windows.
|
|
11
|
+
- **Prêt en quelques minutes** sur une machine neuve.
|
|
12
|
+
- **Jetable** : ta machine reste propre.
|
|
15
13
|
|
|
16
14
|
## Démarrage rapide
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
**Lancer** depuis ce dossier : `make shell` (ou, dans VS Code, *Dev Containers: Reopen in Container*). Le premier build prend quelques minutes (4 à 5 min mesurées, plus le téléchargement des images de base sur une machine neuve).
|
|
24
|
-
3. **Identité git**, une seule fois (nécessaire pour commiter, gardée ensuite, même après `make rebuild`) :
|
|
25
|
-
- avec GitHub : `gh auth login -s workflow` ; l'identité est déduite du compte ;
|
|
26
|
-
- sans GitHub : `git config --file ~/.config/git/config user.name "<nom>"`, puis de même `user.email "<email>"`.
|
|
16
|
+
### Prérequis
|
|
17
|
+
|
|
18
|
+
- Docker Desktop (ou Docker Engine sous Linux). Pour Kubernetes (facultatif) : activer le cluster de Docker Desktop (*Settings → Kubernetes → Enable Kubernetes*).
|
|
19
|
+
- Node (pour `npx`).
|
|
20
|
+
- `make` (nécessaire pour `make shell` ; sous Windows sans `make`, voir le tableau « Au quotidien »).
|
|
27
21
|
|
|
28
|
-
|
|
29
|
-
4. **Vérifier** : `java -version`, `node -v`, `python3 --version`, `repowarden --version` ; avec un cluster : `kubectl get nodes`.
|
|
22
|
+
Sous Windows : il est recommandé de cloner avec Git for Windows (les scripts restent en fins de ligne LF grâce à `.gitattributes`, et la commande npm trouve le `bash` qu'elle exige).
|
|
30
23
|
|
|
31
|
-
|
|
24
|
+
### Lancer en une commande
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx devzone mon-devzone
|
|
28
|
+
cd mon-devzone
|
|
29
|
+
make shell
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Ou bien récupérer le code directement :
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git clone https://github.com/SimBienvenueHoulBoumi/devzone.git
|
|
36
|
+
cd devzone
|
|
37
|
+
make shell
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Tu peux aussi utiliser VS Code : ouvre le dossier `mon-devzone` (ou `devzone`), puis *Dev Containers: Reopen in Container*.
|
|
41
|
+
|
|
42
|
+
À chaque démarrage, un récapitulatif t'indique ce qui est prêt ou ce qu'il te reste à faire (extrait) :
|
|
32
43
|
|
|
33
44
|
```text
|
|
34
45
|
devzone : état (devzone pour le réafficher)
|
|
@@ -39,26 +50,45 @@ devzone : état (devzone pour le réafficher)
|
|
|
39
50
|
○ module kubernetes facultatif, connexion au cluster de l'hôte et metrics-server au démarrage : devzone activer kubernetes
|
|
40
51
|
```
|
|
41
52
|
|
|
42
|
-
|
|
53
|
+
Le premier lancement prend 4 à 5 min mesurées, plus le téléchargement des images de base sur une machine neuve.
|
|
54
|
+
|
|
55
|
+
### Vérifier que tout fonctionne
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
java -version
|
|
59
|
+
node -v
|
|
60
|
+
python3 --version
|
|
61
|
+
repowarden --version
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Avec un cluster Kubernetes actif : `kubectl get nodes`.
|
|
43
65
|
|
|
44
|
-
|
|
66
|
+
**Étape facultative** : `gh auth login -s workflow` pour activer GitHub (push, PR et tickets repowarden).
|
|
45
67
|
|
|
46
|
-
|
|
68
|
+
## Ton premier projet
|
|
47
69
|
|
|
70
|
+
Tes projets vont dans `workspace/` (conservé sur ta machine, même après `make down` ou `make rebuild`).
|
|
71
|
+
|
|
72
|
+
Exemple :
|
|
48
73
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
74
|
+
cd workspace
|
|
75
|
+
git clone https://github.com/ton-compte/ton-projet.git
|
|
76
|
+
# ou
|
|
77
|
+
mkdir mon-projet && cd mon-projet && git init -b main
|
|
52
78
|
```
|
|
53
79
|
|
|
54
|
-
|
|
55
|
-
|---|---|---|
|
|
56
|
-
| `ia` | Claude Code et opencode installés (versions figées), réinstallés à chaque rebuild ; se connecter : `claude` (puis `/login`), `opencode auth login` | désinstallés ; les connexions restent dans leurs volumes |
|
|
57
|
-
| `kubernetes` | à chaque démarrage : connexion au cluster de ta machine et metrics-server sur les clusters locaux (CPU et RAM dans k9s) | aucune connexion au cluster de ta machine ; kubectl, helm, k9s et kind restent installés, un cluster kind créé à la main reste utilisable ; metrics-server n'est pas retiré des clusters où il a été installé |
|
|
80
|
+
Pour en savoir plus : [Mettre en route un projet](https://github.com/SimBienvenueHoulBoumi/devzone/blob/main/docs/reference.md#mettre-en-route-un-projet).
|
|
58
81
|
|
|
59
|
-
|
|
82
|
+
## Ce que contient devzone
|
|
60
83
|
|
|
61
|
-
|
|
84
|
+
| Domaine | Outils |
|
|
85
|
+
|---|---|
|
|
86
|
+
| Langages | Java 21 + Maven, Node LTS + pnpm, Python 3.12 + uv |
|
|
87
|
+
| Conteneurs, Kubernetes | Docker (Docker-in-Docker), kubectl, helm, k9s, kind ; connexion au cluster de l'hôte (module `kubernetes`) |
|
|
88
|
+
| GitHub, qualité | gh, repowarden (hooks git globaux), shellcheck, bats, actionlint, gitleaks, ruff, vulture, pytest |
|
|
89
|
+
| Assistants IA | Claude Code, opencode (module `ia`, désactivé par défaut) |
|
|
90
|
+
|
|
91
|
+
## Au quotidien
|
|
62
92
|
|
|
63
93
|
| Action | VS Code (`Cmd+Shift+P`) | `make` | Sans `make` (Windows) |
|
|
64
94
|
|---|---|---|---|
|
|
@@ -68,218 +98,38 @@ Le choix est **propre à chaque utilisateur** et gardé dans le volume `devzone-
|
|
|
68
98
|
| Supprimer le conteneur | — | `make down` | — |
|
|
69
99
|
| Reconstruire (après une modification de `.devcontainer/`) | *Dev Containers: Rebuild Container* | `make rebuild` | `npx @devcontainers/cli up --workspace-folder . --remove-existing-container` |
|
|
70
100
|
| État | — | `make status` | — |
|
|
71
|
-
| **Désinstaller** (tout ce que devzone a créé, après confirmation) | — | `make desinstaller` | `bash desinstaller.sh` |
|
|
72
|
-
|
|
73
|
-
`make` seul affiche la liste. `up` et `rebuild` affichent leurs étapes (construction de l'image, installation, démarrage, puis l'état de devzone) et un signe de vie au moins toutes les 30 s ; le journal complet va dans `.devzone.log` (sa fin s'affiche en cas d'échec). Aucune étape automatique ne pose de question : si l'une le faisait, `make` l'afficherait et s'arrêterait au lieu d'attendre en silence (voir [Dépannage](#dépannage)).
|
|
74
|
-
|
|
75
|
-
> Ne pas lancer `make up` pendant que VS Code ouvre ou reconstruit le conteneur : deux lancements simultanés créent des conteneurs en double.
|
|
76
|
-
|
|
77
|
-
## Connexions et identité
|
|
78
|
-
|
|
79
|
-
**GitHub (facultatif)** : sert à pousser et ouvrir des PR sur GitHub, aux tickets et bots repowarden, et donne l'identité git automatiquement. Sans GitHub, git fonctionne normalement (dépôts locaux, autre hébergeur) ; seule l'identité se règle à la main. Pour l'utiliser : `gh auth login -s workflow`. Git passe alors par le jeton de `gh` (https, même pour les remotes en `git@github.com:`), sans clé ssh à recopier. Les dépôts de `/workspaces/devzone` sont déclarés sûrs (`safe.directory`).
|
|
80
|
-
- **Permission `workflow`** : sans elle, GitHub refuse tout push qui modifie `.github/workflows/` (fréquent avec repowarden). Compte déjà connecté : `gh auth refresh -h github.com -s workflow`.
|
|
81
|
-
- **Depuis `make shell`**, aucun navigateur ne s'ouvre depuis le conteneur : copier le code affiché par `gh` et ouvrir https://github.com/login/device à la main. L'avertissement « No clipboard utilities available » est sans conséquence.
|
|
82
|
-
|
|
83
|
-
**Identité git** (nécessaire pour commiter) : sans GitHub, à régler à la main (`git config --file ~/.config/git/config user.name "<nom>"` et `user.email "<email>"`) ; avec GitHub, déduite du compte `gh` à chaque démarrage, tant qu'elle manque (`git-identite.sh`) :
|
|
84
|
-
- nom du profil GitHub (sinon le login) ;
|
|
85
|
-
- email noreply `<id>+<login>@users.noreply.github.com` : les commits sont rattachés au compte, l'email personnel n'est pas exposé.
|
|
86
|
-
|
|
87
|
-
Une identité déjà définie n'est jamais remplacée. Pour un autre email : `git config --file ~/.config/git/config user.email "<email>"`. Après un `gh auth login` en cours de session : `bash .devcontainer/git-identite.sh`.
|
|
88
|
-
|
|
89
|
-
**Assistants IA** (module `ia`, voir [Modules](#modules)) : `devzone activer ia`, puis `claude` (puis `/login`), `opencode auth login`.
|
|
90
|
-
|
|
91
|
-
Chaque connexion est **propre à l'utilisateur** : elle vit dans les volumes Docker de sa machine (voir [Données conservées](#données-conservées)). Le dépôt ne contient aucun identifiant.
|
|
92
|
-
|
|
93
|
-
## Mettre en route un projet
|
|
94
|
-
|
|
95
|
-
Tes projets vont dans `workspace/` (`/workspaces/devzone/workspace` dans le conteneur), chacun avec son propre dépôt git. Les hooks repowarden y sont actifs d'office.
|
|
96
|
-
|
|
97
|
-
**Projet existant, déjà équipé de repowarden** (`.repowarden.conf` et workflows présents) : il suffit de le cloner.
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
cd /workspaces/devzone/workspace
|
|
101
|
-
git clone https://github.com/<compte>/<projet>.git
|
|
102
|
-
cd <projet>
|
|
103
|
-
repowarden # état du poste et du dépôt, étape suivante
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**Nouveau projet, ou projet sans repowarden** :
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
cd /workspaces/devzone/workspace
|
|
110
|
-
mkdir <projet> && cd <projet> && git init -b main # ou git clone d'un dépôt existant
|
|
111
|
-
# … premiers fichiers, puis un premier commit : git add . && git cc
|
|
112
|
-
gh repo create <compte>/<projet> --private --source . --push # dépôt GitHub (si absent)
|
|
113
|
-
repowarden bots # CI, releases, tickets, GitHub App, protection : chacun avec ton accord
|
|
114
|
-
repowarden # vérifier
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
`repowarden bots` demande le flux (`main` seule, ou `develop` → `main`), montre ce qu'il va créer, puis attend ta confirmation ; un fichier existant n'est jamais écrasé. Il faut `gh` connecté et les droits d'administration du dépôt GitHub.
|
|
118
|
-
|
|
119
|
-
## Travailler sur un projet
|
|
101
|
+
| **Désinstaller** (tout ce que devzone a créé, après confirmation) | — | `make desinstaller` | `bash core/scripts/desinstaller.sh` |
|
|
120
102
|
|
|
121
|
-
|
|
122
|
-
- **GitHub App** (proposée par `repowarden bots`, ou `repowarden app init`) : sans elle, les workflows agissent sous le bot `github-actions`, dont les actions ne déclenchent aucun autre workflow (PR brouillon sans CI, merge automatique sans préversion…) ; voir [Dépannage](#dépannage).
|
|
123
|
-
- **Vérifications de la CI de repowarden** en local : `shellcheck`, `actionlint`, `bats test/`. actionlint est à la même version que la CI ; shellcheck et bats sont ceux d'Ubuntu 24.04 et peuvent différer légèrement.
|
|
103
|
+
## Options
|
|
124
104
|
|
|
125
|
-
|
|
105
|
+
**Module `ia`** : active Claude Code et opencode (versions figées), avec le garde-fou repowarden qui les arrête avant de modifier `main` ou `develop` ou de commiter sans `repowarden cc` (voir [docs/reference.md](docs/reference.md#garde-fou-des-assistants-ia)). Pour l'activer : `devzone activer ia`. Ils sont désinstallés quand le module est désactivé, mais tes connexions restent dans leurs volumes.
|
|
126
106
|
|
|
127
|
-
|
|
107
|
+
**Module `kubernetes`** : active à chaque démarrage la connexion au cluster de l'hôte et l'installation de metrics-server sur les clusters locaux (pour voir le CPU et la RAM dans k9s). Pour l'activer : `devzone activer kubernetes`. Sans ce module, kubectl, helm, k9s et kind restent installés.
|
|
128
108
|
|
|
129
|
-
|
|
130
|
-
kind create cluster # ~2 min la première fois
|
|
131
|
-
kubectl config get-contexts # clusters de l'hôte + clusters kind
|
|
132
|
-
kubectl config use-context <nom>
|
|
133
|
-
```
|
|
109
|
+
Ces modules sont désactivés par défaut, activables à la demande depuis le conteneur (sans rebuild), et leur choix est conservé d'un démarrage à l'autre.
|
|
134
110
|
|
|
135
|
-
|
|
136
|
-
- **Clusters kind** : tournent dans le Docker interne, redémarrent avec le conteneur, sont conservés par `make rebuild` et `make down` ; supprimés par `kind delete cluster` (ou `make desinstaller`).
|
|
137
|
-
- **CPU et RAM dans k9s** (`kubectl top`) : module `kubernetes` actif, metrics-server est installé au démarrage sur les clusters **locaux** qui ne l'ont pas (Docker Desktop, kind…), jamais sur un cluster distant. Après un `kind create cluster` : `bash .devcontainer/metrics-server.sh` (ou `… metrics-server.sh <contexte>` pour un cluster précis).
|
|
138
|
-
- **Cluster de l'hôte** : `~/.kube` est monté en lecture seule, jamais modifié ; sa copie adaptée est `~/.kube/hote.config` (`127.0.0.1` remplacé par `host.docker.internal`). Après un changement de cluster sur l'hôte : `make stop && make up`.
|
|
139
|
-
- **Messages de démarrage** (`kube-config : …`, `metrics-server : …`, récapitulatif) : dans le terminal de création, ou en relançant `bash .devcontainer/demarrage.sh`.
|
|
111
|
+
## Questions fréquentes
|
|
140
112
|
|
|
141
|
-
Le
|
|
142
|
-
-
|
|
143
|
-
- **
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
Le conteneur est jetable ; ce qui compte vit dans des volumes Docker, sur ta machine.
|
|
148
|
-
|
|
149
|
-
| Volume | Contenu | `make stop` | `make down` | `make rebuild` |
|
|
150
|
-
|---|---|---|---|---|
|
|
151
|
-
| `devzone-gh` | connexion GitHub (`gh`) | gardé | gardé | gardé |
|
|
152
|
-
| `devzone-git` | identité git (`~/.config/git/config`) | gardé | gardé | gardé |
|
|
153
|
-
| `devzone-claude` | connexion et réglages de Claude Code | gardé | gardé | gardé |
|
|
154
|
-
| `devzone-opencode-config`, `devzone-opencode-data` | connexion et réglages d'opencode | gardé | gardé | gardé |
|
|
155
|
-
| `devzone-config` | modules activés (`devzone activer`) | gardé | gardé | gardé |
|
|
156
|
-
| `devzone-m2`, `devzone-pnpm` | caches Maven (`~/.m2`) et pnpm | gardé | gardé | gardé |
|
|
157
|
-
| volume du Docker interne | images Docker et clusters kind du conteneur | gardé | gardé | gardé |
|
|
158
|
-
| `workspace/` (dossier de l'hôte) | tes projets | gardé | gardé | gardé |
|
|
159
|
-
|
|
160
|
-
Tout le reste du conteneur (paquets installés à la main, fichiers hors de ces emplacements) est perdu à `make down` et `make rebuild`. Le Docker interne est isolé : ses images ne sont pas partagées avec Docker Desktop.
|
|
113
|
+
- **Le premier lancement est long** : c'est normal (construction de l'image, téléchargement des images de base). Il prend 4 à 5 min mesurées, plus le téléchargement des images de base sur une machine neuve.
|
|
114
|
+
- **`make` est absent sous Windows** : tu peux utiliser `npx @devcontainers/cli` (voir le tableau « Au quotidien ») ou Git Bash. Les scripts sont compatibles (fins de ligne LF).
|
|
115
|
+
- **Pas de cluster Kubernetes visible** : devzone ne crée jamais de cluster. Avec le module `kubernetes` actif, il tente de se connecter à celui de l'hôte. Sinon, crée un cluster local avec `kind create cluster`.
|
|
116
|
+
- **Problème d'identité git pour commiter** : règle-la une seule fois. Avec GitHub : `gh auth login -s workflow` (l'identité est déduite automatiquement). Sans GitHub : `git config --file ~/.config/git/config user.name "<nom>"` et `git config --file ~/.config/git/config user.email "<email>"`.
|
|
117
|
+
- **`make up` semble bloqué** : il affiche ses étapes et un signe de vie au moins toutes les 30 s ; le journal complet est dans `.devzone.log`.
|
|
161
118
|
|
|
162
119
|
## Désinstaller
|
|
163
120
|
|
|
164
|
-
`make down` ne supprime que le conteneur. Pour retirer **tout ce que devzone a créé** sur ta machine :
|
|
165
|
-
|
|
166
121
|
```bash
|
|
167
|
-
make desinstaller
|
|
168
|
-
make desinstaller GARDER=connexions # pareil, mais garde gh, git, Claude Code, opencode et les modules
|
|
122
|
+
make desinstaller
|
|
169
123
|
```
|
|
170
124
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
| Supprimé | Jamais touché |
|
|
174
|
-
|---|---|
|
|
175
|
-
| conteneur et image `vsc-devzone-…` | `workspace/` (tes projets) |
|
|
176
|
-
| volumes `devzone-*` | l'image de base `mcr.microsoft.com/devcontainers/base` (partagée) |
|
|
177
|
-
| volume du Docker interne (images et clusters kind) | un metrics-server que devzone n'a pas installé |
|
|
178
|
-
| metrics-server **installé par devzone** sur les clusters locaux de ta machine (il porte l'étiquette `devzone=installe` ; vérifié avec le `kubectl` de ta machine) | |
|
|
179
|
-
|
|
180
|
-
Fonctionne aussi après un `make down` : celui-ci note l'image et le Docker interne dans `.devzone.etat`. À la fin, la commande affiche ce qui reste à retirer toi-même si tu le souhaites : le cache `npx` (`~/.npm/_npx`), l'autorisation « GitHub CLI » de ton compte (*GitHub → Settings → Applications*) et le dossier `devzone/`. Sans terminal : `CONFIRMER=oui make desinstaller`.
|
|
181
|
-
|
|
182
|
-
## Mettre à jour un outil
|
|
125
|
+
Cette commande supprime le conteneur, l'image `vsc-devzone-…`, les volumes `devzone-*`, le volume du Docker interne (images et clusters kind créés dans le conteneur) ainsi que les éventuels metrics-server installés par devzone sur les clusters locaux. Elle **ne touche jamais** à `workspace/` (tes projets). Pour garder tes connexions (GitHub, git, Claude Code, opencode et modules) : `make desinstaller GARDER=connexions`.
|
|
183
126
|
|
|
184
|
-
|
|
185
|
-
|---|---|---|
|
|
186
|
-
| k9s, actionlint, gitleaks, kind | `.devcontainer/Dockerfile` : `ARG …_VERSION` **et** les empreintes `sha256` (arm64 + amd64) | `make rebuild` |
|
|
187
|
-
| uv, ruff, vulture, pytest | `.devcontainer/Dockerfile` : `ARG …_VERSION` | `make rebuild` |
|
|
188
|
-
| repowarden | `.devcontainer/post-create.sh` : `repowarden@x.y.z` | `make rebuild` |
|
|
189
|
-
| Claude Code, opencode | `.devcontainer/devzone` : `IA_PAQUETS` (`@anthropic-ai/claude-code@x.y.z`, `opencode-ai@x.y.z`) | `devzone activer ia` (ou `make rebuild`) |
|
|
190
|
-
| metrics-server | `.devcontainer/metrics-server.sh` : `VERSION` | `bash .devcontainer/metrics-server.sh` sur un nouveau cluster |
|
|
191
|
-
| Java, Node, Python, Docker, kubectl, helm, gh | `.devcontainer/devcontainer.json` (features), versions figées dans `devcontainer-lock.json` | `npx @devcontainers/cli upgrade --workspace-folder .` puis `make rebuild` |
|
|
127
|
+
## Pour aller plus loin
|
|
192
128
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
## Tests
|
|
196
|
-
|
|
197
|
-
| Tests | Commande | Où | Durée |
|
|
198
|
-
|---|---|---|---|
|
|
199
|
-
| Commande `devzone` du conteneur et commande npm (unitaires) | `bats test/` | dans le conteneur | quelques secondes |
|
|
200
|
-
| Fonctionnels : un devzone construit et utilisé comme par un utilisateur (outils, modules, Kubernetes avec kind, hooks repowarden, redémarrage, rebuild) | `make test-fonctionnel` | sur ta machine (Docker, Node) | 5 à 10 min |
|
|
201
|
-
| CLI dans un vrai terminal : chaque commande tapée comme par un humain (pseudo-terminal), avec un délai maximal ; une commande qui attend une entrée échoue. Cibles `make` (`help`, `up`, `shell`, `status`, `stop`, `down`, `rebuild`, `desinstaller`), commande npm (`devzone <dossier>`, `desinstaller`, `--version`, `--help`), commande `devzone` du conteneur, scripts de démarrage | `make test-cli` | sur ta machine (Docker, Node, Python 3) | 10 à 15 min |
|
|
202
|
-
| Windows (local et CI) | `bash test/windows.sh` | macOS/Linux (local) ou Windows Git Bash (CI) | quelques secondes |
|
|
203
|
-
|
|
204
|
-
**Windows (CI) : ce qui est vérifié / ce qui n'est pas (conteneur, VS Code).** Le job `windows` vérifie sous `windows-latest` (checkout avec `core.autocrlf=true`, comme un poste Windows) : aucun CRLF dans les scripts (tout fichier suivi commençant par `#!`, plus le `Makefile`) ; empaquetage npm (`npm pack`) et installation de l'archive — dans un préfixe npm isolé sous `$TMP` (le global de la machine n'est jamais touché) ; `devzone --version`, `devzone --help`, option inconnue (avec sortie en erreur) ; `devzone <dossier>` avec `DEVZONE_SANS_DEMARRER=1` (création des fichiers attendus, dossier non vide refusé sans écrasement) ; `devzone desinstaller` hors d'un dossier devzone refusé. Le même parcours passe ensuite par `cmd`, c'est-à-dire le raccourci `.cmd` de npm, avec cette fois une installation globale réelle (le cas d'un utilisateur Windows). Ce qui n'est **pas** vérifié sous Windows CI : `make up` et le conteneur Linux (impossibles sur les runners Windows de GitHub), ainsi que VS Code et Docker Desktop (vérifiés à la main).
|
|
205
|
-
|
|
206
|
-
Les tests fonctionnels et ceux de la CLI travaillent sur une copie du dépôt, avec leurs propres volumes (`devzone-test-…`), puis suppriment tout (conteneur, volumes, image), même en cas d'échec : ton devzone, tes connexions et le cluster de ta machine ne sont jamais touchés (seul un cluster kind de test est utilisé). En CI, le workflow `fonctionnel` les lance (trois jobs : fonctionnel, cli et windows) sur chaque PR qui modifie `.devcontainer/`, `test/`, `bin/`, le `Makefile`, `lancer.sh`, `desinstaller.sh`, `.gitattributes` ou `package.json`, et à la main (*Actions → fonctionnel → Run workflow*).
|
|
207
|
-
|
|
208
|
-
## Versions et livraison
|
|
209
|
-
|
|
210
|
-
Flux `develop` → `main`, géré par repowarden, **sans geste après le merge d'un ticket** :
|
|
211
|
-
1. Le travail entre dans `develop` (branche par défaut), par une PR liée à un ticket. **Son merge est la validation humaine.** Une PR de travail ouverte vers `main` est reciblée vers `develop` par la CI.
|
|
212
|
-
2. Le bot de release publie aussitôt une **préversion** `vX.Y.Z-next.N` et tient à jour la **PR de livraison** `develop` → `main`.
|
|
213
|
-
3. La GitHub App **merge la PR de livraison** dès que ses vérifications sont vertes (`repowarden`, et `livraison` : préversion publiée). Ce merge publie le tag `vX.Y.Z` et la [release GitHub](https://github.com/SimBienvenueHoulBoumi/devzone/releases). Une vérification rouge bloque la livraison, visible sur la PR.
|
|
214
|
-
|
|
215
|
-
`main` reste ainsi à jour avec `develop`. La version suit les Conventional Commits : `fix` → correctif, `feat` → mineure ; une livraison sans `fix` ni `feat` (documentation, CI…) met `main` à jour sans nouvelle version.
|
|
216
|
-
|
|
217
|
-
**Réglages, au choix du mainteneur** :
|
|
218
|
-
|
|
219
|
-
| Réglage | Où | Effet |
|
|
220
|
-
|---|---|---|
|
|
221
|
-
| Livraison automatique (défaut de devzone) | `release.yml`, job `release` : `delivery-auto: true` et `delivery-on-push: true` ; `.repowarden.conf` : `deliveryApproval = auto` | la PR de livraison est armée en merge automatique par la GitHub App et part dès que ses vérifications sont vertes (réglage officiel de repowarden ≥ 4.9) |
|
|
222
|
-
| Livraison manuelle | `release.yml` : `delivery-auto: false` (ou retiré) ; `.repowarden.conf` : `deliveryApproval = review` | la PR de livraison attend ton merge |
|
|
223
|
-
| Préversion à chaque merge (devzone) ou le soir | `release.yml`, job `release` : `preversion-on-push: true` ou rien | sans préversion à chaque merge, la livraison attend celle du soir |
|
|
224
|
-
| Préversion obligatoire avant une version stable (défaut, celui de devzone) | `release.yml`, job `release` : rien, ou `preversion-obligatoire: false` pour la désactiver | désactivée, la vérification `livraison` passe d'office (« préversion non exigée ») : la PR de livraison n'attend plus de préversion, mais la version stable n'a pas été testée en préversion |
|
|
225
|
-
|
|
226
|
-
Prérequis de la livraison automatique : la GitHub App du dépôt (`repowarden app init`, lancé sur ta machine ; voir [Dépannage](#dépannage)). Sans elle, un merge fait par le jeton des Actions ne déclencherait pas la release.
|
|
227
|
-
|
|
228
|
-
## Dépannage
|
|
229
|
-
|
|
230
|
-
| Symptôme | Cause | Solution |
|
|
231
|
-
|---|---|---|
|
|
232
|
-
| `make up` ou `make rebuild` semble figé | une étape longue (première construction de l'image : plusieurs minutes), ou une question posée dans le conteneur | `make` affiche un signe de vie avec la dernière ligne du journal au moins toutes les 30 s : suivre le détail avec `tail -f .devzone.log`. Une question (ligne finissant par `[o/N]`, `?`…) est signalée et le lancement arrêté : la [signaler](https://github.com/SimBienvenueHoulBoumi/devzone/issues), puis `make rebuild`. Version antérieure de devzone, figée sur « Configurer les bots … ? [o/N] » (invisible) : `Ctrl+C`, mettre devzone à jour puis `make rebuild` ; les bots se configurent à la main dans le conteneur : `repowarden bots` |
|
|
233
|
-
| `git push` refusé : « refusing to allow an OAuth App to create or update workflow … without `workflow` scope » | jeton `gh` sans la permission `workflow` | `gh auth refresh -h github.com -s workflow` |
|
|
234
|
-
| PR bloquée, run `action_required`, bandeau « Approve workflows to run » | PR ouverte ou poussée par le bot `github-actions` : pour les événements `pull_request` `opened`, `synchronize` et `reopened`, GitHub attend l'accord d'une personne ayant l'écriture ([doc GitHub](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow)) | vérifier les changements (surtout `.github/workflows/`), puis *Approve workflows to run* ; pour ne plus avoir à le faire : `repowarden app init` dans le projet |
|
|
235
|
-
| PR de livraison bloquée : « aucune préversion vX.Y.Z-next.N » | la préversion n'est pas encore publiée (sans `preversion-on-push`, elle part le soir) | attendre celle du soir, *Actions → release → Run workflow* sur `develop`, `preversion-on-push: true`, ou ne plus l'exiger : `preversion-obligatoire: false` |
|
|
236
|
-
| PR de livraison restée ouverte | une vérification rouge (voir la PR), `delivery-auto: false`, ou GitHub App absente ou désinstallée (avertissement dans le run `release`) | corriger la vérification ; installer l'App (`repowarden app init` sur ta machine) |
|
|
237
|
-
| `repowarden app init` depuis `make shell` : la page `http://127.0.0.1:…` ne s'ouvre pas, ou GitHub ne revient pas | la page est servie dans le conteneur, injoignable depuis le navigateur de ta machine | lancer la commande **sur ta machine** : `npx -y repowarden app init --repo <compte>/<dépôt>` |
|
|
238
|
-
| `repowarden app init` : « nom déjà utilisé » | un essai précédent a créé l'App sans en récupérer les identifiants | supprimer l'App orpheline (*GitHub → Settings → Developer settings → GitHub Apps*), ou `--nom <autre-nom>` |
|
|
239
|
-
| `git commit` : « Please tell me who you are » | identité git absente | avec GitHub : `gh auth login -s workflow` puis `bash .devcontainer/git-identite.sh` ; sans GitHub : `git config --file ~/.config/git/config user.name "<nom>"` et `user.email "<email>"` |
|
|
240
|
-
| `gh auth login` : « Press Enter to open … in your browser », rien ne s'ouvre | pas de navigateur dans le conteneur (`make shell`) | ouvrir https://github.com/login/device à la main et saisir le code |
|
|
241
|
-
| `k9s` : `Error: exit status 1` puis son aide ; `kubectl` : `localhost:8080` … `connection refused` | aucun cluster actif (module `kubernetes` désactivé, ou pas de cluster sur ta machine) | `devzone activer kubernetes` (cluster de ta machine), `kind create cluster`, ou `kubectl config use-context <nom>` |
|
|
242
|
-
| `claude` ou `opencode` : « command not found » | module `ia` désactivé | `devzone activer ia` |
|
|
243
|
-
| CPU et RAM vides dans k9s | metrics-server absent du cluster | `bash .devcontainer/metrics-server.sh` |
|
|
244
|
-
| Deux conteneurs devzone | `make up` lancé pendant que VS Code ouvrait le conteneur | `make down`, puis un seul lancement |
|
|
245
|
-
| Windows (Git Bash, MSYS) : `~/.kube` introuvable | `HOME` et `USERPROFILE` concaténés dans le chemin monté | lancer depuis VS Code ou PowerShell |
|
|
246
|
-
| Pas de `~/.kube` sur l'hôte | Docker le crée vide au démarrage (sous Linux avec Docker Engine, il appartient à root) | rien à faire : le conteneur démarre quand même |
|
|
247
|
-
|
|
248
|
-
## Organisation
|
|
249
|
-
|
|
250
|
-
```text
|
|
251
|
-
devzone/
|
|
252
|
-
├── .devcontainer/
|
|
253
|
-
│ ├── Dockerfile # image de base + outils figés (versions et sha256)
|
|
254
|
-
│ ├── devcontainer.json # features (langages, Docker, Kubernetes, gh), volumes, extensions VS Code
|
|
255
|
-
│ ├── devcontainer-lock.json # versions figées des features
|
|
256
|
-
│ ├── devzone # commande devzone : modules (ia, kubernetes), versions des assistants IA
|
|
257
|
-
│ ├── post-create.sh # premier démarrage : droits des volumes, git, repowarden, modules actifs (sans question)
|
|
258
|
-
│ ├── demarrage.sh # chaque démarrage : identité git, clusters, puis récapitulatif (devzone)
|
|
259
|
-
│ ├── kube-config.sh # contextes kind ; module kubernetes : cluster de l'hôte, metrics-server
|
|
260
|
-
│ ├── metrics-server.sh # metrics-server sur les clusters locaux (CPU et RAM dans k9s)
|
|
261
|
-
│ └── git-identite.sh # identité git déduite du compte gh si elle manque
|
|
262
|
-
├── .github/workflows/
|
|
263
|
-
│ ├── fonctionnel.yml # tests fonctionnels et de la CLI sous terminal (PR touchant le conteneur, les tests ou la CLI)
|
|
264
|
-
│ ├── repowarden.yml # vérifications repowarden de chaque PR (PR mal visée reciblée vers develop)
|
|
265
|
-
│ ├── tickets.yml # suivi des tickets : branche, PR brouillon, statuts jusqu'à la production
|
|
266
|
-
│ ├── release.yml # préversions sur develop, livraison develop → main
|
|
267
|
-
│ └── nettoyage.yml # branches mergées supprimées (main et develop conservées)
|
|
268
|
-
├── .repowarden.conf # réglages repowarden : flux develop → main
|
|
269
|
-
├── Makefile # pilotage sans VS Code
|
|
270
|
-
├── lancer.sh # make up / rebuild : étapes affichées, question du conteneur signalée
|
|
271
|
-
├── desinstaller.sh # make desinstaller : retire tout ce que devzone a créé
|
|
272
|
-
├── bin/devzone # commande npm : npx devzone <dossier>, devzone desinstaller
|
|
273
|
-
├── package.json, LICENSE # paquet npm devzone (licence GPL-3.0-only)
|
|
274
|
-
├── test/
|
|
275
|
-
│ ├── devzone.bats # tests de la commande devzone (bats test/)
|
|
276
|
-
│ ├── cli.bats # tests de la commande npm, du contenu du paquet et de lancer.sh
|
|
277
|
-
│ ├── fonctionnel.sh # tests fonctionnels (make test-fonctionnel)
|
|
278
|
-
│ ├── cli-terminal.sh # tests de la CLI dans un vrai terminal (make test-cli)
|
|
279
|
-
│ └── terminal.py # lance une commande sous pseudo-terminal, avec délai maximal
|
|
280
|
-
└── workspace/ # tes projets (ignorés par git, chacun son dépôt)
|
|
281
|
-
```
|
|
129
|
+
- [Référence détaillée](https://github.com/SimBienvenueHoulBoumi/devzone/blob/main/docs/reference.md)
|
|
130
|
+
- [Contribuer](https://github.com/SimBienvenueHoulBoumi/devzone/blob/main/docs/contribuer.md) : tests, processus de livraison et organisation
|
|
282
131
|
|
|
283
132
|
## Licence
|
|
284
133
|
|
|
285
|
-
devzone est un logiciel libre, distribué sous la [GNU General Public License version 3](LICENSE).
|
|
134
|
+
devzone est un logiciel libre, distribué sous la [GNU General Public License version 3](https://github.com/SimBienvenueHoulBoumi/devzone/blob/main/LICENSE).
|
|
135
|
+
|
package/{bin → core}/devzone
RENAMED
|
@@ -17,8 +17,9 @@ case "$SCRIPT" in
|
|
|
17
17
|
[A-Za-z]:[\\/]*) SCRIPT="$(cygpath -u "$SCRIPT" 2>/dev/null || echo "${SCRIPT//\\//}")" ;;
|
|
18
18
|
esac
|
|
19
19
|
PAQUET="$(cd "$(dirname "$(readlink -f "$SCRIPT" 2>/dev/null || echo "$SCRIPT")")/.." && pwd)"
|
|
20
|
-
# Fichiers d'un devzone (même liste que « files » de package.json, sans
|
|
21
|
-
|
|
20
|
+
# Fichiers d'un devzone (même liste que « files » de package.json, sans la
|
|
21
|
+
# commande core/devzone) ; core/scripts copié à part, sous core/
|
|
22
|
+
FICHIERS=(.devcontainer Makefile .gitattributes README.md LICENSE)
|
|
22
23
|
|
|
23
24
|
version() {
|
|
24
25
|
# Chemin passé en argument à node, jamais écrit dans le code JavaScript de -p :
|
|
@@ -44,8 +45,9 @@ creer() {
|
|
|
44
45
|
echo "✖ $cible existe et n'est pas vide : rien n'est écrasé. Choisis un autre dossier." >&2
|
|
45
46
|
exit 1
|
|
46
47
|
fi
|
|
47
|
-
mkdir -p "$cible/workspace"
|
|
48
|
+
mkdir -p "$cible/workspace" "$cible/core"
|
|
48
49
|
cp -R "${FICHIERS[@]/#/$PAQUET/}" "$cible/"
|
|
50
|
+
cp -R "$PAQUET/core/scripts" "$cible/core/"
|
|
49
51
|
touch "$cible/workspace/.gitkeep"
|
|
50
52
|
# npm n'embarque jamais .gitignore : écrit ici
|
|
51
53
|
cat >"$cible/.gitignore" <<'EOF'
|
|
@@ -57,7 +59,7 @@ workspace/*
|
|
|
57
59
|
.devzone.log
|
|
58
60
|
.devzone.etat
|
|
59
61
|
EOF
|
|
60
|
-
chmod +x "$cible/desinstaller.sh" "$cible/lancer.sh"
|
|
62
|
+
chmod +x "$cible/core/scripts/desinstaller.sh" "$cible/core/scripts/lancer.sh"
|
|
61
63
|
cible="$(cd "$cible" && pwd)"
|
|
62
64
|
echo "✔ devzone $(version) créé dans $cible"
|
|
63
65
|
if [ -n "${DEVZONE_SANS_DEMARRER:-}" ]; then
|
|
@@ -68,7 +70,7 @@ EOF
|
|
|
68
70
|
if command -v make >/dev/null 2>&1; then
|
|
69
71
|
make -C "$cible" up
|
|
70
72
|
else
|
|
71
|
-
bash "$cible/lancer.sh" up "$cible"
|
|
73
|
+
bash "$cible/core/scripts/lancer.sh" up "$cible"
|
|
72
74
|
fi
|
|
73
75
|
echo "Ensuite : cd $cible && make shell (ou ouvre le dossier dans VS Code : Reopen in Container)."
|
|
74
76
|
}
|
|
@@ -77,11 +79,19 @@ case "${1:-}" in
|
|
|
77
79
|
"" | -h | --help | aide) aide ;;
|
|
78
80
|
-v | --version) version ;;
|
|
79
81
|
desinstaller)
|
|
80
|
-
|
|
82
|
+
# Dossier devzone (.devcontainer/) ; un devzone plus ancien a son
|
|
83
|
+
# desinstaller.sh dans scripts/ (avant core/), ou à la racine (avant scripts/)
|
|
84
|
+
desinstalleur=""
|
|
85
|
+
if [ -d .devcontainer ]; then
|
|
86
|
+
for f in core/scripts/desinstaller.sh scripts/desinstaller.sh desinstaller.sh; do
|
|
87
|
+
if [ -f "$f" ]; then desinstalleur="$f" && break; fi
|
|
88
|
+
done
|
|
89
|
+
fi
|
|
90
|
+
if [ -z "$desinstalleur" ]; then
|
|
81
91
|
echo "✖ À lancer dans un dossier devzone (desinstaller.sh introuvable ici)." >&2
|
|
82
92
|
exit 1
|
|
83
93
|
fi
|
|
84
|
-
bash
|
|
94
|
+
bash "$desinstalleur"
|
|
85
95
|
;;
|
|
86
96
|
-*)
|
|
87
97
|
echo "✖ option inconnue : $1 (devzone --help)" >&2
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
# Sans terminal : CONFIRMER=oui.
|
|
11
11
|
set -euo pipefail
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
# Dossier devzone : deux niveaux au-dessus du script (core/scripts/), pour que
|
|
14
|
+
# la commande fonctionne lancée depuis n'importe quel dossier
|
|
15
|
+
ICI="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
14
16
|
ETAT="$ICI/.devzone.etat"
|
|
15
17
|
GARDER="${GARDER:-}"
|
|
16
18
|
CONNEXIONS=(gh git claude opencode-config opencode-data config)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Lance le conteneur sur l'hôte, sans jamais rester muet :
|
|
3
|
-
# bash lancer.sh up [dossier] (make up)
|
|
4
|
-
# bash lancer.sh rebuild [dossier] (make rebuild : reconstruit de zéro)
|
|
3
|
+
# bash core/scripts/lancer.sh up [dossier] (make up)
|
|
4
|
+
# bash core/scripts/lancer.sh rebuild [dossier] (make rebuild : reconstruit de zéro)
|
|
5
5
|
# Sortie complète du CLI devcontainer dans <dossier>/.devzone.log ; dans le
|
|
6
6
|
# terminal : les étapes clés, un signe de vie au plus toutes les
|
|
7
7
|
# DEVZONE_SIGNE_DE_VIE secondes (30), et une question posée dans le conteneur
|
|
@@ -17,7 +17,7 @@ case "$mode" in
|
|
|
17
17
|
up) options=() fini="devzone lancé" ;;
|
|
18
18
|
rebuild) options=(--remove-existing-container) fini="devzone reconstruit" ;;
|
|
19
19
|
*)
|
|
20
|
-
echo "usage : bash lancer.sh up|rebuild [dossier]" >&2
|
|
20
|
+
echo "usage : bash core/scripts/lancer.sh up|rebuild [dossier]" >&2
|
|
21
21
|
exit 2
|
|
22
22
|
;;
|
|
23
23
|
esac
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devzone",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.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": {
|
|
@@ -17,15 +17,14 @@
|
|
|
17
17
|
"environnement"
|
|
18
18
|
],
|
|
19
19
|
"bin": {
|
|
20
|
-
"devzone": "
|
|
20
|
+
"devzone": "core/devzone"
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
|
-
"
|
|
23
|
+
"core/devzone",
|
|
24
24
|
".devcontainer/",
|
|
25
25
|
"Makefile",
|
|
26
26
|
".gitattributes",
|
|
27
|
-
"
|
|
28
|
-
"desinstaller.sh",
|
|
27
|
+
"core/scripts/",
|
|
29
28
|
"README.md",
|
|
30
29
|
"LICENSE"
|
|
31
30
|
]
|