Introduction

Partie 4

Configuration structurée : changez la valeur, pas la ponctuation

L’éditeur de texte montre la source ; la commande de format montre le modèle de données. Les deux vues sont utiles.

Pourquoi un outil spécialisé peut être plus simple

Si vous devez uniquement changer application.debug dans un gros fichier, nommer le chemin logique est souvent plus clair que chercher la bonne section et surveiller virgules, accolades ou séparateurs.

Un même rythme pour plusieurs formats

Les modules partagent une grammaire proche : ouvrir, lire une clé, chercher, écrire avec :, supprimer, valider avec -c ou sérialiser avec dump. $ peut ensuite désigner le fichier actif.

install md mf code ini json xml yml toml conf properties
md lil-playground/project/config
mf lil-playground/project/config/app.ini
cd lil-playground
ini project/config/app.ini
ini $ -w application.name : "lil playground"
ini $ application.name
ini $ -c

INI : sections et valeurs simples

INI regroupe des paires clé/valeur en sections. Les chemins pointés permettent d’atteindre directement une valeur logique sans parcourir tout le fichier.

ini project/config/app.ini
ini $ -w application.debug : true
ini $ application.debug
ini $ -f "application*" -k

JSON : objets, tableaux et types

Pour cet exercice, ouvrez project/config/app.json avec code -n, collez le point de départ {} affiché ci-dessous, enregistrez le fichier, puis seulement exécutez les commandes json. L’éditeur structuré attend un JSON déjà valide.

JSON est omniprésent dans les API, métadonnées et configurations. Une modification par chemin évite des erreurs accidentelles de virgules ou d’accolades ; -c valide explicitement le document.

Commencez le fichier ainsi
{}
code project/config/app.json -n
json project/config/app.json
json $ -w limits.history : 100
json $ limits.history
json $ -c

YAML, TOML, XML, conf et properties

YAML repose fortement sur l’indentation, TOML sur les tables et les types, XML sur les éléments et attributs, conf/properties sur des familles clé/valeur. lil rapproche les opérations courantes sans prétendre que les formats sont identiques.

INIsections + clé/valeurRéglages compacts
JSONobjets + tableauxAPI et métadonnées
YAMLindentation + mappingsDéploiement
TOMLtables + typesOutils et applications
XMLéléments + attributsDocuments structurés
conf / propertiesfamilles clé/valeurServeurs et applications

Validez ; utilisez `dump` quand la source est nécessaire

-c valide le document ; dump renvoie une représentation sérialisée. Les écritures structurées peuvent normaliser formatage ou commentaires. Si la forme exacte du texte compte, utilisez edit ou code.

json $ -c
json dump $
ini dump project/config/app.ini

Quand revenir à `code`

Les modules de format conviennent aux valeurs ciblées, à la recherche et à la validation. code est préférable lorsque commentaires, mise en forme exacte ou fonctions avancées du format sont importantes.

code project/config/app.ini -ini
code project/config/app.json -json

Les changements de configuration font d’excellents scripts

Une suite de réglages vérifiés peut devenir une documentation exécutable. Sur un autre projet, relisez-la, adaptez les valeurs et reproduisez l’environnement.

Conservez ceci comme script

Enregistrez sous configure-app.lil. Deux changements INI ciblés sont appliqués puis validés ; n’insérez pas de secrets dans un script portable sans flux protégé conçu pour cela.

#lil
@install md mf ini json
md lil-playground/project/config
mf lil-playground/project/config/app.ini
cd lil-playground
ini project/config/app.ini
ini $ -w application.debug : true
ini $ -w application.name : "lil playground"
ini $ -c