0.1.0 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
Apache-2.0 - Apache License 2.0Arguments parses command line arguments with a declarative, simple setup
Produces results as a map for super pattern matching argument handling in your app!
$ cmd new myname --more
into
%{new: true, name: "myname", more: true}
Documentation: https://hexdocs.pm/arguments/
Add arguments
to your list of dependencies in mix.exs
:
def deps do
[{:arguments, "~> 0.1.0"}]
end
Arguments provides a module with argument parsing through YourArguments.parse(incoming)
use Arguments
There are two styles of arguments allowed
These two styles can be mixed, but the flags will always take priority
module MyArguments do
use Arguments
command "new", do: [
arguments: [:name, :dir]
]
flag "name", do: [
type: :string,
alias: :n,
defaults: fn (n) -> [
dir: "./#\{n\}"
] end
]
flag "more", do: %{
type: :boolean,
alias: :m
}
flag "more_defaults", do: %{
type: :boolean,
alias: :m,
defaults: [
something: "else"
]
}
flag "dir", do: [
type: :string
]
end
iex> MyArguments.parse(["--name", "myname"])
%{name: "myname", dir: "./myname"}
iex> MyArguments.parse(["new", "myname", "dirhere"])
%{new: true, name: "myname", dir: "dirhere"}
iex> MyArguments.parse(["--more"])
%{more: true}
iex> MyArguments.parse(["-m"])
%{more: true}
iex> MyArguments.parse(["--not-defined"])
%{}