fix: no nested modules, keep import
This commit is contained in:
parent
dba3bce679
commit
c201f7ebe9
1 changed files with 31 additions and 15 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue