lib/mix/tasks/polyn.rollback.ex

defmodule Mix.Tasks.Polyn.Rollback do
  @moduledoc """
  Use `mix polyn.rollback` to rollback a change to your NATS server.
  """
  @shortdoc "Rolls back a migration to your NATS Server"

  use Mix.Task

  alias Polyn.Migration.Migrator

  def run(args) do
    {:ok, _apps} = Application.ensure_all_started(:polyn)

    parse_args(args)
    |> Keyword.put(:direction, :down)
    |> Migrator.run()
  end

  defp parse_args(args) do
    {options, []} = OptionParser.parse!(args, strict: [migrations_dir: :string])

    [
      migrations_dir: Keyword.get(options, :migrations_dir, Migrator.migrations_dir())
    ]
  end
end