À propos du projet

dotcfg est un crate Rust pour une gestion de configuration d'application flexible et contrôlée par le développeur. Contrairement aux crates qui imposent une stratégie de répertoire fixe ou ne prennent en charge que la lecture, dotcfg vous laisse choisir où résident les configurations et quels formats inclure, en gardant le binaire compact grâce à la prise en charge des formats conditionnée par des features. ### Emplacements de stockage Par défaut, les configurations sont stockées dans `~/.toolname/config.toml`, de manière similaire à `.cargo` ou `.ssh`. Les utilisateurs peuvent opter pour des chemins conformes à la norme XDG via `.xdg()`, stocker à un chemin absolu arbitraire avec `.at_dir()`, ou laisser dotcfg remonter depuis le répertoire de travail courant pour localiser une configuration propre au projet (de façon analogue à la recherche de `.git` par Git). ### Prise en charge des formats TOML est activé par défaut. JSON et YAML sont disponibles en tant que features optionnelles (`json`, `yaml`), et les deux peuvent être combinées afin qu'un même binaire lise plusieurs formats. Un nom de fichier personnalisé peut également être défini (par exemple `settings.json`). ### Stratégies de chargement - `load()` — renvoie `None` lorsque le fichier n'existe pas, laissant l'application décider de la suite. - `load_or_error()` — renvoie une erreur si le fichier est absent, adapté aux CLI qui nécessitent une configuration préalable. - `load_or_default()` — crée le fichier rempli avec les valeurs `Default` lors de la première utilisation. ### Accès par clé Lisez et écrivez des clés individuelles sans charger ni écraser la configuration complète : - `cfg.get("user.name")` / `cfg.set("user.name", "jane")` - `cfg.get_as::<u16>("port")` / `cfg.set_val("port", 8080u16)` Les clés imbriquées utilisant la notation pointée (par exemple `section.field`) sont prises en charge et correspondent naturellement aux tables TOML, aux objets JSON et aux mappings YAML. Les fichiers ou répertoires manquants sont créés lors de l'écriture. ### Remplacements par variables d'environnement Les remplacements par variables d'environnement basés sur un préfixe permettent à `MYAPP_PORT=9000` de primer sur la valeur du fichier sans modifier l'état sur disque. `get` renvoie la chaîne brute, tandis que `get_as` analyse les booléens, les nombres et les valeurs `Vec` séparées par des virgules. Les opérations d'écriture ciblent toujours uniquement le fichier de configuration. ### Intégration CLI La bibliothèque fonctionne aux côtés de `clap` pour mettre en œuvre la chaîne de priorité standard : indicateur CLI > fichier de configuration > valeur par défaut de repli. ### Autres utilitaires `exists()`, `dir()`, `file_path()`, `delete_file()` et `delete_dir()` sont disponibles pour l'inspection et le nettoyage par programmation. ### Licence Sous double licence MIT OR Apache-2.0.