lib/mix/tasks/polyn.migrate.ex

defmodule Mix.Tasks.Polyn.Migrate do
  @moduledoc """
  Use `mix polyn.migrate` to make configuration changes to your NATS server.
  """
  @shortdoc "Runs migrations to make modifications 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)
    |> 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