Vérifie qu'un poste de développement satisfait les prérequis d'un dépôt, avant que ça casse au make, au test ou en CI.
Documentation | GitHub | Releases
Table des matières
- 🔐 Rien ne fuit. Les valeurs des variables d'environnement ne sont jamais lues ni affichées.
- 📄 Contrat versionné. Les règles vivent dans
envcheck.yml, à côté du code. - ⚡ Lecture seule. N'installe rien, ne répare rien, ne contacte aucun serveur.
- 🖥️ Multiplateforme. Linux, macOS, Windows —
amd64etarm64. - 🧩 4 types de contrôles. Commande, Docker, variable d'environnement, chemin.
- 🤖 Prêt pour la CI. Sortie JSON et codes de sortie exploitables.
- 🚀 Aucune dépendance. Un seul binaire, pas de runtime à installer.
- ✨ Gratuit. Entièrement open source, sous licence MIT.
Un dépôt décrit souvent ses prérequis dans un README : « Git 2.40+, Node 20, Docker, DATABASE_URL ». Chacun les installe à sa manière, et le premier échec arrive trop tard — au make, au test ou en CI.
envcheck transforme cette liste en un contrat exécutable, versionné avec le code :
- Le mainteneur déclare les règles dans
envcheck.yml. - Le contributeur (ou la CI) lance
envcheck. - Chaque règle produit un verdict, un message et éventuellement un conseil (
hint). - Le code de sortie dit si l'environnement est prêt.
Téléchargez l'archive correspondant à votre système depuis GitHub Releases, vérifiez la somme, extrayez, puis placez le binaire dans votre PATH.
Cibles publiées
| OS | Architectures |
|---|---|
| Linux | amd64, arm64 |
| macOS | amd64, arm64 |
| Windows | amd64 |
Exemple sous Linux amd64 :
# Remplacez VERSION par le tag publié, par ex. 0.1.0
VERSION=0.1.0
curl -fsSL -O "https://github.com/SkyZonDev/envcheck/releases/download/v${VERSION}/envcheck_${VERSION}_linux_amd64.tar.gz"
curl -fsSL -O "https://github.com/SkyZonDev/envcheck/releases/download/v${VERSION}/checksums.txt"
grep -F "envcheck_${VERSION}_linux_amd64.tar.gz" checksums.txt | sha256sum -c
tar -xzf "envcheck_${VERSION}_linux_amd64.tar.gz"
sudo install -m 0755 envcheck /usr/local/bin/envcheck
envcheck --versionGo 1.27 ou plus récent est requis pour compiler (voir go.mod). L'utilisateur final n'a pas besoin de Go une fois le binaire installé.
git clone https://github.com/SkyZonDev/envcheck.git
cd envcheck
go build -o envcheck ./cmd/envcheckOu, si le module est déjà publié :
go install github.com/SkyZonDev/envcheck/cmd/envcheck@latestDans la racine d'un dépôt :
envcheck init # écrit envcheck.yml s'il n'existe pas
# …adaptez les règles au projet…
envcheck # équivalent à envcheck checkSans --config, envcheck cherche uniquement dans le répertoire courant : envcheck.yml puis .envcheck.yml. Il ne remonte jamais vers les répertoires parents — un dépôt n'hérite donc jamais silencieusement de la configuration d'un autre projet.
envcheck est un lecteur de contrat, pas un installeur.
flowchart LR
A["YAML local"] --> B["Validation stricte"]
B --> C["Évaluation séquentielle"]
C --> D["Rapport"]
D --> E["Code de sortie"]
- Une règle en échec n'arrête pas les suivantes : le rapport est complet.
required: falsetransforme un échec en avertissement. L'environnement reste « prêt » (code0) si tous les contrôles obligatoires passent.- Les sous-processus (
git --version,docker info, …) partent sans shell, avec un délai de 3 secondes. La sortie brute n'entre pas dans le rapport. - Les valeurs des variables d'environnement n'apparaissent jamais : un contrôle
envdit seulement absente, vide ou définie.
Quatre types de contrôles
| Type | Question posée |
|---|---|
command |
Ce binaire est-il dans le PATH ? Sa version SemVer est-elle dans la plage demandée ? |
docker |
Le client docker existe-t-il, et le démon répond-il à docker info ? |
env |
Cette variable d'environnement est-elle définie (et non vide, sauf allowEmpty) ? |
path |
Ce fichier ou ce dossier existe-t-il, relativement au répertoire courant ? |
Le détail du pipeline, des verdicts et de l'architecture interne est dans docs/fonctionnement.md.
Exemple minimal (celui produit par envcheck init) :
version: 1
projectName: my-project
checks:
- id: git
type: command
command: git
version: ">=2.40.0"
hint: "Installez Git depuis https://git-scm.com/downloads."
- id: docker-daemon
type: docker
hint: "Démarrez Docker Desktop ou le service Docker."
- id: database-url
type: env
envName: DATABASE_URL
hint: "Copiez .env.example vers .env et renseignez DATABASE_URL."
- id: migrations
type: path
path: ./migrations
kind: directoryversion: 1 est le numéro de schéma YAML, indépendant de la version du binaire. Les clés inconnues sont refusées.
Référence complète des champs : docs/configuration.md. Un exemple commenté se trouve aussi dans examples/envcheck.yml.
| Commande | Rôle |
|---|---|
envcheck / envcheck check |
Charge, valide et exécute toutes les règles |
envcheck init |
Écrit envcheck.yml s'il n'existe pas |
envcheck init --dry-run |
Affiche le modèle sans écrire |
envcheck init --force |
Écrase un fichier existant |
envcheck --version |
Affiche la version compilée |
envcheck --help |
Aide et exemples |
Options communes
| Option | Effet |
|---|---|
--config CHEMIN |
Fichier YAML explicite (pas de découverte) |
--format text|json |
Sortie humaine ou objet JSON (défaut : text) |
--quiet |
N'afficher que les non-réussites |
--no-color |
Couper les couleurs ANSI |
Les couleurs sont aussi désactivées hors TTY et si NO_COLOR est défini.
Référence CLI, codes de sortie et intégration CI : docs/cli.md.
| Code | Signification |
|---|---|
0 |
Exécution valide : tous les contrôles obligatoires réussissent |
1 |
Exécution valide : au moins un contrôle obligatoire échoue |
2 |
Fichier absent, YAML invalide, schéma invalide ou option incorrecte |
3 |
Erreur interne inattendue |
En CI, envcheck --format json écrit uniquement l'objet JSON sur stdout. Les erreurs de configuration vont sur stderr.
| Document | Contenu |
|---|---|
| docs/fonctionnement.md | Pipeline, verdicts, sécurité d'exécution, architecture |
| docs/configuration.md | Schéma YAML, champs par type, règles de validation |
| docs/cli.md | Commandes, options, rapport JSON, usage en CI |
| SECURITY.md | Ce qui ne doit jamais fuiter, signalement |
| CONTRIBUTING.md | Build, tests, conventions de contribution |
| CHANGELOG.md | Historique des versions |
Ce projet est distribué sous licence MIT — © 2026 SkyZonDev.