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.
Use this property to validate a ConfigValue
. This property receives a string or an array of strings representing an
expression that evaluates to a boolean. If an array is provided, all expressions must evaluate to true
for the value
to be considered valid.
ConfigExpression context
ConfigExpression context
The ConfigValue
to be validated.
The ConfigValue
to be validated as a raw string as it is stored in the ConfigStore
.
The Cfgu
of the evaluated config.
The ConfigKey
of the evaluated config.
The origin of the ConfigValue
. One of empty
, default
, store
, override
, or const
.
An array containing all of the labels of the config. If the config has no labels, then the array will be empty. Acts
as syntax sugar for $.cfgu.label
for expression consistency.
The ConfigStore
provided as input to the command.
The ConfigSet
provided as input to the command.
The ConfigSchema
provided as input to the command.
Use this to access the Cfgu
properties of another ConfigKey.
Use this to access the value
of another ConfigKey.
Use this to access the storedValue
of another ConfigKey.
ConfigExpression examples
ConfigExpression examples
Define a constant value for a ConfigKey
through a ConfigExpression
, these ConfigKeys
are never queried through a
ConfigStore
. This property cannot be set together with lazy
, default
, or required
.
ConfigExpression context
ConfigExpression context
The Cfgu
of the evaluated
config.
The ConfigKey
of the evaluated config.
An array containing all of the labels of the config. If the config has no labels, then the array will be empty. Acts as syntax sugar for $.cfgu.label
for expression consistency.
The ConfigStore
provided as input to the
command.
The ConfigSet
provided as input to the command.
The ConfigSchema
provided as input to the command.
Use this to access the Cfgu
properties of another ConfigKey.
Use this to access the value
of another ConfigKey.
Use this to access the storedValue
of another ConfigKey.
Define a regular expression a ConfigValue
must match. This property must be provided if the type
is RegEx
.
Specify a JSON schema a ConfigValue
must conform to. This property must be provided if the type
is JSONSchema
.
Specify a list of allowable ConfigValues
for a ConfigKey
. This property cannot be an empty array or contain empty
strings. Each option must be unique.
Set a default ConfigValue
for a ConfigKey
if not explicitly provided.
This property cannot be set together with required
, const
or lazy
properties.
If enum
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
or const
.
Indicate that a ConfigValue
is set only during EvalCommand
execution, excluding it from UpsertCommand
assignments. This property cannot be set together with const
or default
.
Indicate that this ConfigKey
will be omitted from ExportCommand
results.
List labels to categorize ConfigKeys
for easier filtering on ExportCommand
.