feat(lib): helper ini_set idempotent pour merge de fichiers INI #18
Notifications
Due Date
No due date set.
Blocks
#19 feat(gitea): script d'installation LXC Alpine + README
Damien/infra-scripts
Reference: Damien/infra-scripts#18
Reference in New Issue
Block a user
Contexte
openbao/install.shapplique le pattern « écrire la config seulement si elle est absente » :Ce pattern est correct pour OpenBao (config figée après init), mais il entre en collision avec la règle d'idempotence du dépôt : rejouer le script doit appliquer les configurations manquantes. Appliqué tel quel à l'
app.inide Gitea, une instance déjà installée ne recevrait jamais les nouvelles clés[security]ajoutées par une version ultérieure du script.Il faut donc un merge clé par clé, pas un tout-ou-rien au niveau du fichier.
Fonction à ajouter
Dans
lib/common.sh:Sémantique attendue :
Contraintes
awk/sed), pas de dépendance typecrudini— cohérent avec « self-contained, no frameworks ».ENABLEDexiste dans[metrics]et[actions]) — le scope est la section, jamais le fichier entier.mv) pour ne pas corrompre l'app.inisi le script est interrompu.=en lecture ; normaliser enCLE = valeuren écriture.Documentation dans l'en-tête de
lib/common.shLe bloc de commentaires en tête de fichier documente un contrat explicite :
detect_latest_alpine_template(),enable_tty1_autologin()etrefresh_os_packages()sont Alpine-only et une future variante Debian doit avoir sa propre fonction.ini_set()est le premier helper OS-agnostique du fichier. Il faut l'écrire noir sur blanc dans l'en-tête, sinon quelqu'un la dupliquera par symétrie avec les autres.Fichier touché
lib/common.shCritères d'acceptation
app.inide testdiffvide) — c'est le test d'idempotenceini_setsur[metrics] ENABLEDne modifie pas[actions] ENABLEDlib/common.shmentionne le caractère OS-agnostique de la fonctionshellcheck lib/common.shsans nouvelle alerteDépendances
Aucune. Bloque #19 (le script Gitea consomme cette fonction).