1
65%
MIT
Reason/BuckleScript bindings to the nconf library.

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

  • RE
  • ML
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()
  );
967: syntax error, consider adding a `;' before

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

  • RE
  • ML
let appConfig =
  Nconf.(
    make()
    |> jsFilePathNamed("example", {j|/path/to/file.js|j})
    |> get()
  );
let appConfig =
  let open Nconf in
    ((make ()) |> (jsFilePathNamed "example" {j|/path/to/file.js|j})) |>
      (get ())

Set a value

String Literal

  • RE
  • ML
let appConfig =
  Nconf.(
    make()
    |> setLiteral("some:key:path", `Str("foo"))
    |> get()
  )
let appConfig =
  let open Nconf in
    ((make ()) |> (setLiteral "some:key:path" (`Str "foo"))) |> (get ())

Integer Literal

  • RE
  • ML
let appConfig =
  Nconf.(
    make()
    |> setLiteral("some:key:path", `Int(42))
    |> get()
  )
let appConfig =
  let open Nconf in
    ((make ()) |> (setLiteral "some:key:path" (`Int 42))) |> (get ())

Object Literal

  • RE
  • ML
let appConfig =
  Nconf.(
    make()
    |> setObject("some:key:path", { "foo": "bar" })
    |> get()
  )
let appConfig =
  let open Nconf in
    ((make ()) |> (setObject "some:key:path" ([%bs.obj { foo = "bar" }]))) |>
      (get ())

Get a value

  • RE
  • ML
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
  };
967: syntax error, consider adding a `;' before

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...