Beryl::CLI::ConfigGit
Auto-commit des écritures de beryl dans le dépôt git de config société.
Contexte : le dépôt ~/.config/beryl/<société>/ (ex: acme/beryl-config)
est versionné. Toute commande beryl qui ÉCRIT dans ce dépôt (scan --apply, add-domain, env migrate/edit, …) doit committer le
changement pour qu'il ne soit pas perdu/oublié (constaté le 9 juin
2026 sur qgra : config disques corrigée à la main, jamais commitée).
UX : commit automatique par défaut, avec un message parlant. Chaque
writer expose un flag --no-commit pour s'abstenir (CI, édition en
rafale, etc.).
Sécurité : git add respecte le .gitignore du dépôt. Un fichier
ignoré (typiquement .env.yml en clair) n'est JAMAIS stagé, même
nommé explicitement — on ne force jamais avec -f. Le commit ne
portera donc jamais de secret en clair. Seul le coffre chiffré
.env.toml.age (commitable) finit versionné.
Instance methods
Commite paths dans le dépôt qui les contient, avec message.
no_commit: true→ ne fait rien (log explicite).- paths hors de tout dépôt git → log « pas un dépôt git, skip commit ».
- rien à stager (écriture idempotente, ou fichier gitignore comme
.env.ymlen clair) → log « rien à committer ». - sinon →
git addpuisgit commit -m <message>(scopé aux paths).
git add peut renvoyer un code non-nul si un chemin est gitignore :
les autres chemins sont tout de même stagés. On ignore donc son code
retour et on laisse git diff --cached faire foi sur ce qui sera
réellement commité.
Remonte depuis path (fichier ou dossier) jusqu'à trouver la racine
d'un dépôt git — présence d'un .git, dossier OU fichier (un
worktree git matérialise .git sous forme de fichier). Retourne le
chemin absolu de la racine, ou nil si path n'est sous aucun
dépôt.