lib/mada_reader.ex

defmodule MadaReader do
  def main(argv) do
    argv
    |> parse_args()
    |> run()
  end

  defp parse_args([inputfile, outputfile]), do: [inputfile, outputfile]
  defp parse_args(_) do
    IO.puts "Usage: mada_reader <input.mada> <output.root>"
    System.halt(1)
  end

  def run([path_to_mada, path_to_output]) do
    put_run_msg [path_to_mada, path_to_output]
    path_to_mada
    |> MadaReader.BinaryParser.run()
    |> MadaReader.MadaStructure.write(path_to_mada)
    |> MadaReader.RootWrapper.call_make_tree(path_to_output)
  end

  defp put_run_msg([path_to_mada, path_to_output]) do
    IO.puts("#{path_to_mada} -> #{path_to_output}")
  end
end