defmodule Honcho do
@moduledoc """
Entry point for Honcho.
"""
@doc "Entry point for running Honcho as an escript"
def main([]), do: Honcho.Output.usage()
def main([cmd | args]) do
System.put_env("ERL_CRASH_DUMP_SECONDS", "0")
cmd
|> Honcho.Subcommand.find()
|> run(Honcho.Args.parse(args))
end
@doc "Runs a subcommand module"
def run(_, {:error, :parse_args, arg}),
do: usage("Unknown option: #{arg}")
def run({:ok, cmd}, {:ok, 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
end