Packages

Mix tasks for creating and running interactive workshops for teaching people how to program in Elixir, and other things.

Current section

Files

Jump to
workshop lib tasks scratch.ex
Raw

lib/tasks/scratch.ex

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