Configu Configuration-as-Code Format
The Cfgu
format defines the characteristics of a software configuration in Configu, providing metadata and constraints for ConfigValues
. When attached to a ConfigKey
in a ConfigSchema
, it enables validation of ConfigValues
, facilitating their implementation in the code.
Location
.cfgu
files essentially set the boundaries of different domains in the code relative to the configuration they use. Developers are free to organize and structure their .cfgu
files in a way that makes sense for their specific needs and workflow. There is no limit on the number of .cfgu
files that can be created, and they can be spread across different codebases, subfolders in the same project, and different repositories.
Format
The .cfgu
file can be written in one of the following formats: YAML
or JSON
. The name suffix of this file should be .cfgu.yaml|yml|json
according to the format used.
$schema
Include the $schema
property at the beginning of the file to specify the Cfgu
version to communicate to other readers and tooling which specification version is intended.
Also, most modern editors will use this property to provide IntelliSense and validation for the Cfgu
file.
Properties
Describe a ConfigKey
’s purpose within the application.
Define the data type of a ConfigValue
.
- If the type is
RegEx
, apattern
property must be provided. - If the type is
JSONSchema
, aschema
property must be provided.
Define a regular expression a ConigValue
must match.
This property must be provided if the type
is RegEx
.
Specify a JSON schema a ConigValue
must conform to.
This property must be provided if the type
is JSONSchema
.
Specify a list of allowable ConigValues
for a ConfigKey
.
This property cannot be set together with template
.
This property cannot be an empty array or contain empty strings.
Each option must be unique and according to the type
of the ConfigKey
.
Set a default ConfigValue
for a ConfigKey
if not explicitly provided.
This property cannot be set together with required
or template
or lazy
properties.
If options
is set, the default value must be one of the options.
Indicate whether a ConfigKey
is essential for the application’s functionality. When set to true
, a ConfigValue
must be found on EvalCommand
.
This property cannot be set together with default
.
List other ConfigKeys
this configuration depends on.
This property cannot be an empty array or contain reserved words.
Define a template for constructing a ConfigValue
from other Configs
.
This property cannot be set together with default
or lazy
.
Indicate that a ConfigValue
is set only during EvalCommand
execution, excluding it from UpsertCommand
assignments.
This property cannot be set together with default
or template
.
Indicate that this ConfigKey
will be omitted from ExportCommand
results.
List labels to categorize ConfigKeys
for easier filtering on ExportCommand
.