reason-nconf
ReasonML bindings to the nconf library.
This is a very rough implementation that will enable very simple use cases.
Usage
type config = { .. "THING1": string, "THING2": int}; let baseDir = "/path/to/somewhere"let appConfig: config = Nconf.( make() |> argv() |> env() |> filePathNamed("locals", {j|$baseDir/config/locals.json|j}) |> filePathNamed("defaults", {j|$baseDir/config/defaults.json|j}) |> get() );
Load a JavaScript file
This is accomplished from an internal module written in ReasonML. The internal module is a near 1-to-1 copy of nconf-js
let appConfig = Nconf.( make() |> jsFilePathNamed("example", {j|/path/to/file.js|j}) |> get() );
Set a value
String Literal
let appConfig = Nconf.( make() |> setLiteral("some:key:path", `Str("foo")) |> get() )
Integer Literal
let appConfig = Nconf.( make() |> setLiteral("some:key:path", `Int(42)) |> get() )
Object Literal
let appConfig = Nconf.( make() |> setObject("some:key:path", { "foo": "bar" }) |> get() )
Get a value
let appConfig = Nconf.( make() |> jsFilePathNamed("example", {j|./__tests__/assets/data.js|j}) )let username = switch(Nconf.getKey(appConfig, "obj:auth:username") |> Js.Nullable.to_opt) { | None => Js.Exn.raiseError("Could not retrieve username") | Some(x) => x };
How do I install it?
Inside of a BuckleScript project:
yarn install --save reason-nconf
Then add reason-nconf
to your bs-dependencies
in bsconfig.json
:
How do I use it?
See the Usage section above...
What's missing?
Mostly everything...