Erlang env var config with validation
Erlang
-module(env_config).
-export([get/2, get_int/3]).
get(Name, Default) ->
case os:getenv(Name) of
false -> Default;
"" -> Default;
Value -> Value
end.
%% Integer env var validated against an inclusive range.
get_int(Name, Default, {Min, Max}) ->
case get(Name, undefined) of
undefined -> Default;
Raw ->
case string:to_integer(Raw) of
{Int, ""} when Int >= Min, Int =< Max -> Int;
_ -> error({invalid_env, Name, Raw})
end
end.