Go to file
2022-10-09 01:02:38 +03:00
examples Add quickstart example to readme 2022-10-09 00:42:15 +03:00
source/mirage Ignore comments in java properties 2022-10-09 00:17:20 +03:00
testfiles Add properties files to loadConfig 2022-10-09 00:12:24 +03:00
.gitignore Add JSON config example 2022-09-25 19:03:26 +03:00
CHANGES.md Add changelog 2022-10-09 00:22:34 +03:00
dub.json Add quickstart example to readme 2022-10-09 00:42:15 +03:00
dub.selections.json Rename project to detach it from Poodinis 2022-09-24 17:04:57 +03:00
LICENSE.txt Add project skeleton 2022-09-23 23:34:22 +03:00
makefile Add quickstart example to readme 2022-10-09 00:42:15 +03:00
README.md Add supported formats to the table 2022-10-09 01:02:38 +03:00

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