Current section
Files
Jump to
Current section
Files
lib/nox.env.ex
defmodule Nox.Env do
@moduledoc """
Environment of node installation
"""
alias Nox.Semver
defstruct dir: nil, versions: []
@default_nvm "v1.1.2"
@default_node "8.9.4"
@default_npm "5.6"
@type options :: [option]
@type option :: {:dir, Path.t}
| {:node, String.t}
| {:nvm, String.t}
| {:npm, String.t}
@type t :: %__MODULE__{}
@doc """
Creates new env
"""
@spec new(options) :: t
def new(options \\ []) do
# Check version syntax
{_, _, _, _} = Semver.parse(Keyword.get(options, :nvm, @default_nvm))
{_, _, _, _} = Semver.parse(Keyword.get(options, :node, @default_node))
{_, _, _, _} = Semver.parse(Keyword.get(options, :npm, @default_npm))
%__MODULE__{
dir: Keyword.get_lazy(options, :dir, fn -> :code.priv_dir(:nox) end),
versions: [
nvm: Keyword.get(options, :nvm, @default_nvm),
node: Keyword.get(options, :node, @default_node),
npm: Keyword.get(options, :npm, @default_npm)
]
}
end
@doc """
Creates default env
"""
@spec default() :: t
def default, do: new()
end