40 lines
1.3 KiB
Plaintext
Raw Permalink Normal View History

2026-01-12 03:36:55 +00:00
# Helper functions for configuration composition
#
# Provides utilities for merging base schemas with deployment mode overlays
# and composing final configurations.
{
# Merge configuration records with override support
# apply_merge : record -> record -> record
apply_merge = fun defaults overrides =>
defaults & overrides,
# Compose final configuration from base schema, mode defaults, and user customizations
# compose_config : record -> record -> record -> record
compose_config = fun schema mode_defaults user_customizations =>
let base = schema in
let with_mode = base & mode_defaults in
with_mode & user_customizations,
# Validate required fields are not empty (for sensitive configs)
# validate_non_empty : String -> String -> {Bool}
validate_non_empty = fun field_name value =>
if std.string.length value > 0 then
{valid = true}
else
{
valid = false,
error = "Field '%{field_name}' must not be empty",
},
# Convert config to JSON for export
# to_json : record -> String
to_json = fun config =>
config | std.serialize 'Json,
# Convert config to TOML-compatible JSON (removes nested Nickel types)
# to_toml : record -> String
to_toml = fun config =>
config | std.serialize 'Json,
}