Day 4; run watches in a seperate process to allow continuation after crashes
This commit is contained in:
@@ -5,6 +5,7 @@ defmodule Mix.Tasks.Aoc do
|
||||
defp module(1), do: Aoc2023.Day1
|
||||
defp module(2), do: Aoc2023.Day2
|
||||
defp module(3), do: Aoc2023.Day3
|
||||
defp module(4), do: Aoc2023.Day4
|
||||
# [MODULE INSERTION POINT]
|
||||
|
||||
defp base_dir(), do: System.get_env("AOC_BASE")
|
||||
@@ -102,7 +103,7 @@ defmodule Mix.Tasks.Aoc do
|
||||
end
|
||||
|
||||
defp run(day, ["test", "watch"]) do
|
||||
{:ok, pid} = Mix.Tasks.Aoc.Watcher.start_link({[dirs: ["lib/", "test/day#{day}/"]], self()})
|
||||
{:ok, pid} = Mix.Tasks.Aoc.Watcher.start_link({[dirs: ["lib/", "tests/day#{day}/"]], self()})
|
||||
Process.monitor(pid)
|
||||
loop = fn (loop) ->
|
||||
IO.puts(IO.ANSI.clear() <> IO.ANSI.cursor(0, 0))
|
||||
@@ -112,7 +113,9 @@ defmodule Mix.Tasks.Aoc do
|
||||
:code.purge(Aoc2023.Common)
|
||||
:code.load_file(module(day))
|
||||
:code.load_file(Aoc2023.Common)
|
||||
run(day, ["test"])
|
||||
spawn fn ->
|
||||
run(day, ["test"])
|
||||
end
|
||||
receive do
|
||||
:update -> loop.(loop)
|
||||
{:DOWN, _, :process, ^pid, _} -> nil
|
||||
@@ -129,8 +132,6 @@ defmodule Mix.Tasks.Aoc do
|
||||
|> Enum.map(&test(day, &1))
|
||||
|> Enum.map(fn {test, input, p1e, p2e} ->
|
||||
parsed = mod.parse(input)
|
||||
p1 = mod.part1(parsed)
|
||||
p2 = mod.part2(parsed)
|
||||
|
||||
result = fn (part, got, expected) ->
|
||||
cond do
|
||||
@@ -142,8 +143,8 @@ defmodule Mix.Tasks.Aoc do
|
||||
end
|
||||
end
|
||||
|
||||
result.(1, p1, p1e)
|
||||
result.(2, p2, p2e)
|
||||
result.(1, mod.part1(parsed), p1e)
|
||||
result.(2, mod.part2(parsed), p2e)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user