Skip to content

scull7/reason-nconf

Repository files navigation

NPM Build Status Coverage Status

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:

{
  "bs-dependencies": [
    "reason-nconf"
  ]
}

How do I use it?

See the Usage section above...

What's missing?

Mostly everything...

About

ReasonML bindings to the nconf library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published