defmodule Mix.Tasks.Workshop.Scratch do use Mix.Task @spec run(OptionParser.argv) :: :ok def run(argv) do Workshop.start([], []) {_opts, _, _} = OptionParser.parse(argv, switches: [system: :boolean]) IO.inspect Workshop.Exercises.list_by_weight! end end # def fast_forward_to_first_non_passing do # sandbox = File.ls!(Workshop.Session.get(:folder)) # state = %{exercises: Exercises.list!, # state: Workshop.State.get(:exercises, [])} # {checked_out, remaining} = find_checked_out_and_non_checked_out(state.exercises, sandbox) # Workshop.State.update :exercises, Workshop.State.get(:exercises, []) # |> update_exercises(checked_out, fn state, exercise_mod -> # identifier = Exercise.get_identifier(exercise_mod) # current_state = Keyword.get(state, identifier, []) # {identifier, Keyword.put(current_state, :status, :in_progress)} # end, state) # Workshop.State.update :exercises, Workshop.State.get(:exercises, []) # |> update_exercises(remaining, fn state, exercise_mod -> # identifier = Exercise.get_identifier(exercise_mod) # current_state = Keyword.get(state, identifier, []) # {identifier, Keyword.put(current_state, :status, :not_started)} # end, state) # Workshop.State.persist! # end # def update_exercises(state, exercises, fun, opts) do # name_map = create_name_map(opts.exercises) # exercises # |> Stream.map(&(elem(&1, 1))) # |> Stream.map(&(Map.get(name_map, &1))) # |> Stream.map(&Exercise.load/1) # |> Stream.map(&(fun.(state, &1))) # |> Enum.to_list # end # def mark_as_not_checked_out(state, exercises, opts) do # name_map = create_name_map(opts.exercises) # exercises # |> Stream.map(&(elem(&1, 1))) # |> Stream.map(&(Map.get(name_map, &1))) # |> Stream.map(&Exercise.load/1) # |> Stream.map(fn exercise_mod -> # identifier = Exercise.get_identifier(exercise_mod) # current_state = Keyword.get(state, identifier, []) # {identifier, Keyword.put(current_state, :status, :not_started)} # end) # |> Enum.to_list # end