diff --git a/lib/meditate.ex b/lib/meditate.ex index 047e38d..c72e9cb 100644 --- a/lib/meditate.ex +++ b/lib/meditate.ex @@ -7,7 +7,7 @@ defmodule Mix.Tasks.Meditate do Code.compiler_options(ignore_module_conflict: true) Watcher.start - Options.parse(args) + Options.start(args) Runner.run :timer.sleep(:infinity) diff --git a/lib/options.ex b/lib/options.ex index 28b6166..c2e57ef 100644 --- a/lib/options.ex +++ b/lib/options.ex @@ -3,12 +3,8 @@ defmodule Options do clear_screen: false } - def parse(args) do - options = Enum.reduce(args, @defaults, fn(arg, acc) -> - Map.merge(acc, parse_argument(arg)) - end) - - Agent.start_link(fn -> options end, name: __MODULE__) + def start(args) do + Agent.start_link(fn -> parse(args) end, name: __MODULE__) end def clear_screen? do @@ -17,6 +13,12 @@ defmodule Options do end) end + defp parse(args) do + Enum.reduce(args, @defaults, fn(arg, acc) -> + Map.merge(acc, parse_argument(arg)) + end) + end + def parse_argument("--clear-screen"), do: %{ clear_screen: true} def parse_argument(_), do: %{} end diff --git a/test/options_test.exs b/test/options_test.exs index d9d3a2f..59da904 100644 --- a/test/options_test.exs +++ b/test/options_test.exs @@ -2,17 +2,17 @@ defmodule OptionTest do use ExUnit.Case, async: true test "has default options" do - Options.parse([]) + Options.start([]) refute Options.clear_screen? end test "override clearing of screen" do - Options.parse(["--clear-screen"]) + Options.start(["--clear-screen"]) assert Options.clear_screen? end test "ignores unknown options" do - options = Options.parse(["--foo"]) + Options.start(["--foo"]) refute Options.clear_screen? end end