0.4.0 • Published 5 years ago
bs-getenv v0.4.0
bs-getenv
PPX for ReasonML / BuckleScript for embedding environment variables in the code.

Installation
Get the package:
# yarn
yarn add bs-getenv
# or npm
npm install --save bs-getenvThen 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 defaultValuecan be any expression of typestring
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_NAMEenv 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)wheretis 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 installBuild ppx:
esy buildTo 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