View Source Mahaul.Helpers (Mahaul v0.1.0)

Basic helpers for parsing and validating the system environment variables.

Link to this section Summary

Functions

:str

iex> Mahaul.Helpers.parse("some value", :str)
{:ok, "some value"}

:num

iex> Mahaul.Helpers.parse("10", :num)
{:ok, 10.0}

iex> Mahaul.Helpers.parse("10.2345", :num)
{:ok, 10.2345}

iex> Mahaul.Helpers.parse("some value", :num)
{:error, nil}

:int

iex> Mahaul.Helpers.parse("10", :int)
{:ok, 10}

iex> Mahaul.Helpers.parse("10.2345", :int)
{:error, nil}

iex> Mahaul.Helpers.parse("some value", :int)
{:error, nil}

:bool

iex> Mahaul.Helpers.parse(true, :bool)
{:ok, true}

iex> Mahaul.Helpers.parse(false, :bool)
{:ok, false}

iex> Mahaul.Helpers.parse("true", :bool)
{:ok, true}

iex> Mahaul.Helpers.parse("false", :bool)
{:ok, false}

iex> Mahaul.Helpers.parse("1", :bool)
{:ok, true}

iex> Mahaul.Helpers.parse("0", :bool)
{:ok, false}

:port

iex> Mahaul.Helpers.parse("1", :port)
{:ok, 1}

iex> Mahaul.Helpers.parse("65535", :port)
{:ok, 65535}

iex> Mahaul.Helpers.parse("8080", :port)
{:ok, 8080}

iex> Mahaul.Helpers.parse("some value", :port)
{:error, nil}

iex> Mahaul.Helpers.parse("-1", :port)
{:error, nil}

iex> Mahaul.Helpers.parse("0", :port)
{:error, nil}

iex> Mahaul.Helpers.parse("65536", :port)
{:error, nil}

:host

iex> Mahaul.Helpers.parse("//localhost", :host)
{:ok, "//localhost"}

iex> Mahaul.Helpers.parse("//domain.com", :host)
{:ok, "//domain.com"}

iex> Mahaul.Helpers.parse("//192.168.0.1", :host)
{:ok, "//192.168.0.1"}

iex> Mahaul.Helpers.parse("ftp://localhost", :host)
{:error, nil}

iex> Mahaul.Helpers.parse("https://domain.com", :host)
{:error, nil}

iex> Mahaul.Helpers.parse("https", :host)
{:error, nil}

iex> Mahaul.Helpers.parse("https://domain.com/something", :host)
{:error, nil}

:uri

iex> Mahaul.Helpers.parse("ftp://localhost", :uri)
{:ok, "ftp://localhost"}

iex> Mahaul.Helpers.parse("https://domain.com", :uri)
{:ok, "https://domain.com"}

iex> Mahaul.Helpers.parse("postgresql://user:pass@localhost:5432/dev_db", :uri)
{:ok, "postgresql://user:pass@localhost:5432/dev_db"}

iex> Mahaul.Helpers.parse("//localhost", :uri)
{:error, nil}

iex> Mahaul.Helpers.parse("//domain.com", :uri)
{:error, nil}

iex> Mahaul.Helpers.parse("//192.168.0.1", :uri)
{:error, nil}

Link to this section Types

@type config_type() :: keyword()
@type error_type() :: {:error, nil}
@type parsed_vars_type() :: list()
@type success_type() :: {:ok, atom() | binary() | number()}
@type var_type() :: :str | :num | :int | :bool | :port | :host | :uri

Link to this section Functions

@spec get_env(atom(), config_type()) :: error_type() | success_type()
@spec get_normalized_val({atom(), config_type()}) ::
  {atom(), error_type() | success_type()}
@spec parse(binary(), var_type()) :: error_type() | success_type()

:str

iex> Mahaul.Helpers.parse("some value", :str)
{:ok, "some value"}

:num

iex> Mahaul.Helpers.parse("10", :num)
{:ok, 10.0}

iex> Mahaul.Helpers.parse("10.2345", :num)
{:ok, 10.2345}

iex> Mahaul.Helpers.parse("some value", :num)
{:error, nil}

:int

iex> Mahaul.Helpers.parse("10", :int)
{:ok, 10}

iex> Mahaul.Helpers.parse("10.2345", :int)
{:error, nil}

iex> Mahaul.Helpers.parse("some value", :int)
{:error, nil}

:bool

iex> Mahaul.Helpers.parse(true, :bool)
{:ok, true}

iex> Mahaul.Helpers.parse(false, :bool)
{:ok, false}

iex> Mahaul.Helpers.parse("true", :bool)
{:ok, true}

iex> Mahaul.Helpers.parse("false", :bool)
{:ok, false}

iex> Mahaul.Helpers.parse("1", :bool)
{:ok, true}

iex> Mahaul.Helpers.parse("0", :bool)
{:ok, false}

:port

iex> Mahaul.Helpers.parse("1", :port)
{:ok, 1}

iex> Mahaul.Helpers.parse("65535", :port)
{:ok, 65535}

iex> Mahaul.Helpers.parse("8080", :port)
{:ok, 8080}

iex> Mahaul.Helpers.parse("some value", :port)
{:error, nil}

iex> Mahaul.Helpers.parse("-1", :port)
{:error, nil}

iex> Mahaul.Helpers.parse("0", :port)
{:error, nil}

iex> Mahaul.Helpers.parse("65536", :port)
{:error, nil}

:host

iex> Mahaul.Helpers.parse("//localhost", :host)
{:ok, "//localhost"}

iex> Mahaul.Helpers.parse("//domain.com", :host)
{:ok, "//domain.com"}

iex> Mahaul.Helpers.parse("//192.168.0.1", :host)
{:ok, "//192.168.0.1"}

iex> Mahaul.Helpers.parse("ftp://localhost", :host)
{:error, nil}

iex> Mahaul.Helpers.parse("https://domain.com", :host)
{:error, nil}

iex> Mahaul.Helpers.parse("https", :host)
{:error, nil}

iex> Mahaul.Helpers.parse("https://domain.com/something", :host)
{:error, nil}

:uri

iex> Mahaul.Helpers.parse("ftp://localhost", :uri)
{:ok, "ftp://localhost"}

iex> Mahaul.Helpers.parse("https://domain.com", :uri)
{:ok, "https://domain.com"}

iex> Mahaul.Helpers.parse("postgresql://user:pass@localhost:5432/dev_db", :uri)
{:ok, "postgresql://user:pass@localhost:5432/dev_db"}

iex> Mahaul.Helpers.parse("//localhost", :uri)
{:error, nil}

iex> Mahaul.Helpers.parse("//domain.com", :uri)
{:error, nil}

iex> Mahaul.Helpers.parse("//192.168.0.1", :uri)
{:error, nil}
@spec parse_all(config_type()) :: parsed_vars_type()
@spec validate(parsed_vars_type()) :: {:ok} | {:error, binary()}
@spec validate!(parsed_vars_type()) :: nil