lib/mix/tasks/gha/config.ex

defmodule Mix.Tasks.Gha.Config do
  @moduledoc """
  Creates a `GitHubActions` directory with config and default workflow.

  The config file gets the name `config.exs` and the default workflow gets the
  name `defaults.exs`.

  ## Command line options
  - `--gen-global` - creates `~/.gha`
  - `--gen-local` - creates `.gha`
  """

  @shortdoc "Creates a `GitHubActions` directory with config and default workflow."

  use Mix.Task

  @impl Mix.Task
  def run(options) do
    {opts, []} =
      OptionParser.parse!(options,
        strict: [gen_global: :boolean, gen_local: :boolean]
      )

    GitHubActions.copy(opts)
  rescue
    error ->
      Mix.Shell.IO.error(Exception.format(:error, error, []))
      exit({:shutdown, 1})
  end
end