Skip to main content

lib/mix/tasks/astral.new.ex

Code.ensure_compiled(Igniter)

if Code.ensure_loaded?(Igniter) do
  defmodule Mix.Tasks.Astral.New do
    @shortdoc "Create an Astral starter site in the current project"

    @moduledoc """
    #{@shortdoc}

    This is an Igniter-powered scaffold task for existing Mix projects. It
    composes `astral.install`, so it is safe to use directly or through
    `mix igniter.install astral`.

    ## Example

        mix astral.new
    """

    use Igniter.Mix.Task

    @impl Igniter.Mix.Task
    def info(_argv, _parent) do
      %Igniter.Mix.Task.Info{
        group: :astral,
        composes: ["astral.install"],
        example: "mix astral.new"
      }
    end

    @impl Igniter.Mix.Task
    def igniter(igniter) do
      Igniter.compose_task(igniter, "astral.install", igniter.args.argv_flags)
    end
  end
else
  defmodule Mix.Tasks.Astral.New do
    @moduledoc "Create an Astral starter site in the current project."
    @shortdoc @moduledoc

    use Mix.Task

    @impl Mix.Task
    def run(_argv) do
      Mix.shell().error("""
      The task 'astral.new' requires Igniter.

      Please install Igniter and try again:

          mix archive.install hex igniter_new
      """)

      exit({:shutdown, 1})
    end
  end
end