1
0
Fork 0

fix: no nested modules, keep import

This commit is contained in:
Sloane Perrault 2022-09-21 09:19:53 -04:00
parent dba3bce679
commit c201f7ebe9

View file

@ -23,25 +23,19 @@ defmodule Mix.Tasks.AdventOfCode.Gen.Solution do
case OptionParser.parse!(args, switches: @switches) do case OptionParser.parse!(args, switches: @switches) do
{_, [day]} -> {_, [day]} ->
day_module = day_module(day) day_module = day_module(day)
day_contents = day_template(mod: day_module) |> Code.format_string!() day_contents = day_template(mod: day_module, day: day) |> Code.format_string!()
day_path = Path.join("lib", Macro.underscore(day_module)) day_path = Path.join("lib", Macro.underscore(day_module))
day_tests_path = Path.join("test", Macro.underscore(day_module)) day_tests_path = Path.join("test", Macro.underscore(day_module))
day_file = "#{day_path}.ex" day_file = "#{day_path}.ex"
create_directory(day_path)
create_directory(day_tests_path)
create_file(day_file, day_contents) create_file(day_file, day_contents)
create_directory(day_tests_path)
for part <- 1..2 do for part <- 1..2 do
part = to_string(part) part = to_string(part)
part_module = part_module(day, part) part_module = part_module(day, part)
part_contents =
part_template(mod: part_module, day_mod: day_module) |> Code.format_string!()
part_file = Path.join("lib", "#{Macro.underscore(part_module)}.ex")
create_file(part_file, part_contents)
part_test_module = Module.concat(day_module, Macro.camelize("Part#{part}Test")) part_test_module = Module.concat(day_module, Macro.camelize("Part#{part}Test"))
part_test_contents = part_test_contents =
@ -59,25 +53,47 @@ defmodule Mix.Tasks.AdventOfCode.Gen.Solution do
end end
end end
embed_template(:day, ~S""" embed_template(:day, ~S[
defmodule <%= inspect(@mod) %> do defmodule <%= inspect(@mod) %> do
@moduledoc """
Day <%= @day %>
"""
end end
""")
embed_template(:part, ~S""" defmodule <%= inspect(@mod) %>.Part1 do
defmodule <%= inspect(@mod) %> do @moduledoc """
Day <%= @day %>, Part 1
"""
alias AdventOfCode.PuzzleSolver alias AdventOfCode.PuzzleSolver
use PuzzleSolver use PuzzleSolver
import <%= inspect(@day_mod) %>, warn: false import <%= inspect(@mod) %>, warn: false
@impl PuzzleSolver @impl PuzzleSolver
def solve(_input_stream) do def solve(_input_stream) do
:ok |> to_string() :ok |> to_string()
end end
end end
""")
defmodule <%= inspect(@mod) %>.Part2 do
@moduledoc """
Day <%= @day %>, Part 2
"""
alias AdventOfCode.PuzzleSolver
use PuzzleSolver
import <%= inspect(@mod) %>, warn: false
@impl PuzzleSolver
def solve(_input_stream) do
:ok |> to_string()
end
end
])
embed_template(:part_test, ~S[ embed_template(:part_test, ~S[
defmodule <%= inspect(@test_mod) %> do defmodule <%= inspect(@test_mod) %> do