bs-getenv

0.4.0 • Public • Published

bs-getenv

bs-getenv pipeline npm version

PPX for ReasonML / BuckleScript for embedding environment variables in the code.

bs-getenv

Installation

Get the package:

# yarn 
yarn add bs-getenv
# or npm 
npm install --save bs-getenv

Then add it to bsconfig.json:

"ppx-flags"["bs-getenv/ppx"]

Usage

%getenv ...

With a default value

Usage: [%getenv VAR_NAME; defaultValue], where:

  • The result type will be string
  • defaultValue can be any expression of type string

Without a default value

Usage: [%getenv VAR_NAME], where:

  • The result type will be option(string).

%getenv.exn ...

Usage: [%getenv.exn VAR_NAME], where:

  • The result type will be string
  • Useful in those cases where the application absolutely needs an env variable to exist (e.g.: app secrets)
  • If VAR_NAME env var does not exist, it will fail at compile time with the message: %getenv environment variable not found: VAR_NAME

switch%getenv ...

With a default value (exhaustive pattern matching)

Usage:

switch%getenv (VAR_NAME) {
| "<some value>" => ...
| _ => ...default
}

where:

  • The result type will be the type of the cases

Without a default value (non-exhaustive pattern matching)

Usage:

switch%getenv (VAR_NAME) {
| "<some value>" => ...
}

where:

  • The result type will be option(t) where t is the type of the cases

Example

let getDefaultValue = () => "Some other value";
 
let var1: string = [%getenv SOME_VAR_THAT_DOESNT_EXIST; getDefaultValue()];
 
let var2: string = [%getenv USER; "default value"];
 
let var3: option(string) = [%getenv HOME];
 
let var4: option(string) = [%getenv SOME_VAR_THAT_DOESNT_EXIST];
 
let var5: bool =
  switch%getenv (USER) {
  | "anler" => true
  | _ => false
  };
 
let var6: option(bool) =
  switch%getenv (USER) {
  | "anler" => true
  };

Developing

Clone repo and install deps:

esy install
yarn install

Build ppx:

esy build

To explore generated output, run yarn build and look the compiled file test/Test.bs.js.

TODO

  • Just get env variables
  • Support switch cases
  • Better error reporting
  • Support switch guards and variables

Package Sidebar

Install

npm i bs-getenv

Weekly Downloads

6

Version

0.4.0

License

MIT

Unpacked Size

46.7 MB

Total Files

7

Last publish

Collaborators

  • anler