Selecting multiple configs from a Config Group
Problem
In some scenarios, one may need to select multiple configs from the same Config Group.
Solution
Use a list of config names as the value of the config group in the Defaults List or in the command line.
Example
In this example, we configure a server. The server can host multiple websites at the same time.
├── config.yaml
└── server
├── apache.yaml
└── site
├── amazon.yaml
├── fb.yaml
└── google.yaml
defaults:
- server/apache
defaults:
- site:
- fb
- google
host: localhost
port: 443
amazon:
domain: amazon.com
fb:
domain: facebook.com
google:
domain: google.com
Output:
server:
site:
fb:
domain: facebook.com
google:
domain: google.com
host: localhost
port: 443
Override the selected sites from the command line by passing a list. e.g:
server:
site:
google:
domain: google.com
amazon:
domain: amazon.com
host: localhost
port: 443
Overriding packages
You can relocate the package of all the configs in the list. e.g:
defaults:
- site@https:
- fb
- google
server:
https:
fb:
domain: facebook.com
google:
domain: google.com
When overriding the selected configs of config groups with overridden packages you need to use the package. e.g:
server:
https:
amazon:
domain: amazon.com
host: localhost
port: 443
Implementation considerations
A nested list in the Defaults List is interpreted as a list of non-overridable configs:
defaults:
- site:
- fb
- google
defaults:
- site/fb
- site/google
All default package for all the configs in server/site is server.site.
This example uses an explicit nesting level inside each of the website configs to prevent them stepping over one another:
amazon:
...