lib/tools/cmd.ex

defmodule Dragon.Tools.Cmd do
  @doc """
  More user friendly command system
  """
  def run([cmd | argv]) do
    case System.cmd(cmd, argv, stderr_to_stdout: true) do
      {output, 0} -> {:ok, output}
      {output, err} -> {:error, err, output}
    end
  rescue
    err ->
      case err do
        %ErlangError{original: :enoent} -> {:error, "Command not found: #{cmd}"}
        %ErlangError{original: what} -> {:error, what}
      end
  end
end