examples | ||
source/mirage | ||
testfiles | ||
.gitignore | ||
CHANGES.md | ||
dub.json | ||
dub.selections.json | ||
LICENSE.txt | ||
makefile | ||
README.md |
Mirage Config
Version 0.0.0
Copyright 2022 Mike Bierlee
Licensed under the terms of the MIT license - See LICENSE.txt
Toolkit for loading and using application configuration from various formats.
Features:
- Load from various file formats such as JSON and Java properties;
- Environment variable substitution;
- Internal configuration substitution (Value in config replaced by other path in config);
- Parse configuration from string or JSONValue instead of from disk.
TODO: add tutorial on:
- Config loading
- Config parsing
- Config manip
- Env and config var substitution -- Escaping
Getting started
DUB Dependency
See the DUB project page for instructions on how to include Mirage Config into your project.
Quickstart
import std.stdio : writeln;
import mirage : loadConfig, parseJavaProperties;
void main() {
// Load configuration from file (see examples/quickstart/config.json):
auto config = loadConfig("config.json");
writeln(config.get("application.name"));
writeln(config.get!long("application.version"));
// Or parse directly from string:
auto properties = parseJavaProperties("
databaseDriver = Postgres
database.host = localhost
database.port = 5432
");
auto databaseConfig = properties.getConfig("database");
writeln(properties.get("databaseDriver"));
writeln(databaseConfig.get("host"));
writeln(databaseConfig.get("port"));
}
More formats are available (see Formats).
For more details and examples, see the examples directory.
Formats
The following file formats are currently supported:
Format | Extension | Import* | Loader | Parser | Factory |
---|---|---|---|---|---|
any below | any below | mirage |
loadConfig ** |
(N/A) | |
JSON | .json | mirage.json |
loadJsonConfig |
parseJsonConfig *** |
JsonConfigFactory |
Java | .properties | mirage.java |
loadJavaProperties |
parseJavaProperties |
JavaPropertiesFactory |
* Any loader or parser can be imported from the mirage
package since they are all publicly imported.
** Loads files based on their extension. If the file does not use one of the extensions in the table, you must use a specific loader.
*** Besides parsing strings like the other formats, it also accepts a JSONValue
.
History
For a full overview of changes, see CHANGES.md