module

Beryl::Config::Loader

Lit l'arborescence ~/.config/beryl/ et construit un Root exploitable.

Nouvelle arborescence (ADR-014) :

~/.config/beryl/ ├── _default.yml ├── .env.yml ├── <société>/ │ ├── _account.yml # optionnel : métadonnées société │ ├── <domaine>.yml │ ├── <domaine>/ # hosts directs + groupes │ │ ├── <host>.yml │ │ └── <groupe>/ │ │ ├── <host>.yml │ │ └── ... │ └── ... └── <autre société>/

Tolère les fichiers/dossiers absents : une société peut avoir un seul domaine sans sous-dossier d'hosts, un _default.yml peut manquer, etc. Seul ~/.config/beryl/ lui-même peut être absent (on retourne un Root vide).

Class methods

load(root_path : String) : Result

Charge une arborescence à partir du chemin racine (typiquement ~/.config/beryl/). Retourne defaults + accounts + env_file.

Source
load_account(name : String, path : String) : Account

Charge une société : son _account.yml éventuel + ses domaines.

Source
load_accounts(root : String) : Hash(String, Account)

Scanne le dossier racine et charge les sociétés. Une société = un sous-dossier du root, sauf les dossiers réservés (nom commençant par _, nom caché .).

Source
load_defaults(path : String) : Hash(YAML::Any, YAML::Any)

Charge _default.yml ou retourne un hash vide s'il n'existe pas.

Source
load_domain(account_dir : String, domain_name : String, yml_path : String) : Domain

Charge un domaine : son .yml + son dossier (hosts directs + groupes + hosts dans groupes).

Source
load_domain_contents(domain_dir : String) : Tuple(Hash(String, HostNode), Hash(String, Group))

Scanne le dossier d'un domaine :

  • Chaque .yml à la racine du dossier est UN host direct (sauf fichiers spéciaux _*.yml).
  • Chaque sous-dossier est un groupe. Son .yml de définition est le fichier <groupe>.yml à côté du dossier.
Source
load_domains(account_dir : String) : Hash(String, Domain)

Scanne le dossier d'une société pour identifier les domaines (fichiers <domaine>.yml sauf _*.yml et fichiers cachés).

Source
parse_yaml_hash(path : String) : Hash(YAML::Any, YAML::Any)

Parse un fichier YAML attendu à la racine comme un hash.

Source

Nested types