devzone 0.5.3 → 0.5.4

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/.gitattributes CHANGED
@@ -1,5 +1,10 @@
1
- # Scripts lancés dans le conteneur Linux : fins de ligne LF même sur un
2
- # checkout Windows (bash échoue sur les CRLF)
3
- *.sh text eol=lf
4
- Dockerfile text eol=lf
5
- Makefile text eol=lf
1
+ # Scripts lancés par un interpréteur (bash, bats, Python) : fins de ligne LF
2
+ # même sur un checkout Windows (l'interpréteur échoue sur les CRLF)
3
+ *.sh text eol=lf
4
+ *.bats text eol=lf
5
+ *.py text eol=lf
6
+ Dockerfile text eol=lf
7
+ Makefile text eol=lf
8
+ # Scripts bash sans extension (lancés directement)
9
+ bin/devzone text eol=lf
10
+ .devcontainer/devzone text eol=lf
package/README.md CHANGED
@@ -15,7 +15,7 @@ Environnement de développement complet dans un conteneur (devcontainer) : les m
15
15
 
16
16
  ## Démarrage rapide
17
17
 
18
- 1. **Prérequis** : Docker (Docker Desktop, ou Docker Engine sous Linux), puis **soit** VS Code + extension *Dev Containers*, **soit** Node (pour `npx`) et `make`. Facultatif, pour Kubernetes : activer le cluster de Docker Desktop (*Settings → Kubernetes → Enable Kubernetes*). Sous Windows : cloner avec Git for Windows (les scripts restent en fins de ligne LF grâce à `.gitattributes`).
18
+ 1. **Prérequis** : Docker (Docker Desktop, ou Docker Engine sous Linux), puis **soit** VS Code + extension *Dev Containers*, **soit** Node (pour `npx`) et `make`. Facultatif, pour Kubernetes : activer le cluster de Docker Desktop (*Settings → Kubernetes → Enable Kubernetes*). Sous Windows : 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).
19
19
  2. **Obtenir devzone**, au choix :
20
20
  - `npx devzone mon-devzone` : crée le dossier `mon-devzone/` et lance le conteneur (paquet npm `devzone`, une fois publié) ;
21
21
  - ou `git clone https://github.com/SimBienvenueHoulBoumi/devzone.git`.
@@ -199,8 +199,11 @@ Empreinte d'une archive : `curl -fsSL <url> | shasum -a 256`.
199
199
  | Commande `devzone` du conteneur et commande npm (unitaires) | `bats test/` | dans le conteneur | quelques secondes |
200
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
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 |
202
203
 
203
- 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 (deux jobs en parallèle) sur chaque PR qui modifie `.devcontainer/`, `test/`, `bin/`, le `Makefile` ou les scripts `lancer.sh` et `desinstaller.sh`, et à la main (*Actions → fonctionnel → Run workflow*).
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*).
204
207
 
205
208
  ## Versions et livraison
206
209
 
package/bin/devzone CHANGED
@@ -12,7 +12,12 @@ PAQUET="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || echo "
12
12
  # Fichiers d'un devzone (même liste que « files » de package.json, sans bin/)
13
13
  FICHIERS=(.devcontainer Makefile .gitattributes lancer.sh desinstaller.sh README.md LICENSE)
14
14
 
15
- version() { node -p "require('$PAQUET/package.json').version" 2>/dev/null || echo inconnue; }
15
+ version() {
16
+ # Chemin passé en argument à node, jamais écrit dans le code JavaScript de -p :
17
+ # sous Git Bash $PAQUET vaut /c/… et seul un argument séparé est reconverti
18
+ # pour un programme Windows (cygpath inutile)
19
+ node -p 'require(process.argv[1]).version' "$PAQUET/package.json" 2>/dev/null || echo inconnue
20
+ }
16
21
 
17
22
  aide() {
18
23
  cat <<EOF
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devzone",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
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": {