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