You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.6 KiB

type variable_doc('t) = {
name: string,
doc: string,
default: string,
};
module EnvVar =
(
M: {
type t;
let name: string;
let doc: string;
let default: t;
let parse: string => t;
let unparse: t => string;
},
) => {
include M;
let getOpt = () => Sys.getenv_opt(name) |> Opt.map(parse);
let get = () => Opt.(getOpt() or default);
let docInfo = {name, doc, default: unparse(default)};
};
let ensureTrailingBackslash = str =>
switch (str.[String.length(str) - 1]) {
| '/' => str
| _ => str ++ "/"
};
module FNM_NODE_DIST_MIRROR =
EnvVar({
type t = string;
let name = "FNM_NODE_DIST_MIRROR";
let doc = "https://nodejs.org/dist/ mirror";
let default = "https://nodejs.org/dist/";
let parse = ensureTrailingBackslash;
let unparse = ensureTrailingBackslash;
});
module FNM_DIR =
EnvVar({
type t = string;
let parse = ensureTrailingBackslash;
let unparse = ensureTrailingBackslash;
let name = "FNM_DIR";
let doc = "The root directory of fnm installations.";
let default = {
let home =
Sys.getenv_opt("HOME")
|> Opt.orThrow("There isn't $HOME environment variable set.");
Filename.concat(home, ".fnm");
};
});
module FNM_MULTISHELL_PATH =
EnvVar({
type t = string;
let parse = x => x;
let unparse = x => x;
let name = "FNM_MULTISHELL_PATH";
let doc = "Where the current node version link is stored";
let default = "";
});
let getDocs = () => [FNM_DIR.docInfo, FNM_NODE_DIST_MIRROR.docInfo];