feat(modules): config loader refactor — YAML → DB → env override pipeline #95

Closed
opened 2026-02-14 19:45:45 +00:00 by forbes · 0 comments
Owner

Ref: docs/MODULES.md §5.1–5.3, §8, §11 step 2

Refactor config loading to support the three-tier precedence model:

  1. Parse config.yaml into Go config struct (existing)
  2. Query settings_overrides — merge each dotted-path key into the struct
  3. Apply environment variable overrides (existing SILO_* vars)
  4. Query module_state — override default enabled/disabled from YAML
  5. Validate module dependencies (dag requires jobs, jobs requires auth, odoo requires auth)

Config YAML changes (§8):

  • Add modules section to config struct for optional module toggles
  • Keep existing top-level keys for backward compatibility (auth.enabled controls auth module)
  • If a module is not listed under modules:, its default state from §2.2 applies

Dotted path resolver:

  • auth.ldap.enabled → sets Config.Auth.LDAP.Enabled
  • Handles nested struct traversal via reflection or a key-to-setter map

Depends on #94.

**Ref:** docs/MODULES.md §5.1–5.3, §8, §11 step 2 Refactor config loading to support the three-tier precedence model: 1. Parse `config.yaml` into Go config struct (existing) 2. Query `settings_overrides` — merge each dotted-path key into the struct 3. Apply environment variable overrides (existing `SILO_*` vars) 4. Query `module_state` — override default enabled/disabled from YAML 5. Validate module dependencies (`dag` requires `jobs`, `jobs` requires `auth`, `odoo` requires `auth`) **Config YAML changes (§8):** - Add `modules` section to config struct for optional module toggles - Keep existing top-level keys for backward compatibility (`auth.enabled` controls auth module) - If a module is not listed under `modules:`, its default state from §2.2 applies **Dotted path resolver:** - `auth.ldap.enabled` → sets `Config.Auth.LDAP.Enabled` - Handles nested struct traversal via reflection or a key-to-setter map Depends on #94.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/silo#95