Current section

Files

Jump to
honcho lib honcho.ex
Raw

lib/honcho.ex

defmodule Honcho do
@moduledoc """
Entry point for Honcho
"""
def main([]), do: Honcho.Output.usage()
def main([cmd | args]) do
System.put_env("ERL_CRASH_DUMP_SECONDS", "0")
cmd
|> Honcho.Subcommand.find()
|> run(parse_args(args))
end
def run(_, {:error, :parse_args, arg}),
do: usage("Unknown option: #{arg}")
def run({:ok, cmd}, args), do: apply(cmd, :run, args)
def run({:error, :no_command, cmd}, _),
do: usage("Unable to find subcommand #{inspect(cmd)}")
defp usage(msg) do
Honcho.Output.warn(msg)
Honcho.Output.usage()
end
defp parse_args(args), do: parse_args(Keyword.new(), args)
defp parse_args(argument_list, []), do: argument_list
defp parse_args(argument_list, ["--procfile", procfile | tail]),
do: parse_args([Keyword.put(argument_list, :procfile, procfile)], tail)
defp parse_args(_argument_list, [key | _]),
do: {:error, :parse_args, key}
end