Generating YAML, JSON and TOML
Protoconf has built-in support for generating YAML, JSON, and TOML configurations. This allows you to use Protoconf in environments that expect configurations in these formats, and to take advantage of the different strengths of each format.
Basic Usage
If a configuration file's path ends with .yaml, .yml, .json, or .toml, Protoconf will automatically generate the configuration in the corresponding format. The generated file will be written to the appropriate path under ./outputs as well as to the ./materialized_configs directory.
For example, if you have a configuration file at myproject/server_config.json.pconf, Protoconf will generate a JSON configuration file at ./outputs/myproject/server_config.json.
Multiple Configurations
If you are using a .mpconf file to generate multiple configurations, you can specify the output format for each configuration by including the format extension in the key of the returned dictionary.
For example, if you have a .mpconf file that returns {"server_config.yaml": ServerConfiguration}, Protoconf will generate a YAML configuration file at ./outputs/server_config.yaml.
Full Example
Let's assume you have a ProtoBuf message ServerConfiguration defined as below:
message ServerConfiguration {
bool enable_debug = 1;
uint32 max_connections = 2;
}
You can create a .mpconf file as below:
load("//myproject/v1/server_config.proto", "ServerConfiguration")
def main():
config = ServerConfiguration()
config.enable_debug = True
config.max_connections = 1000
return {
"server_config.json": config,
"server_config.yaml": config,
"server_config.toml": config
}
By running protoconf compile . on this .mpconf file, Protoconf will generate a JSON file at ./outputs/server_config.json, a YAML file at ./outputs/server_config.yaml, and a TOML file at ./outputs/server_config.toml.
This feature makes it easy to generate multiple configurations in different formats from a single .mpconf file, simplifying your configuration management process.