lib/mix/tasks/tailwind.install.ex

defmodule Mix.Tasks.Tailwind.Install do
  @moduledoc """
  Installs Tailwind CLI (by default under `_build`).

  ```bash
  $ mix tailwind.install
  $ mix tailwind.install --force
  ```

  By default, it installs #{Tailwind.latest_version()} but you
  can configure it in your config files, such as:
      config :tailwind, :version, "#{Tailwind.latest_version()}"
  ## Options

      * `--force` - Always installs, even if the binary already exists.
  """

  @shortdoc "Installs Tailwind under _build"

  use Mix.Task

  @impl Mix.Task
  def run(args) do
    options = [force: :boolean]

    case OptionParser.parse_head!(args, strict: options) do
      {opts, []} ->
        if opts[:force] do
          Tailwind.install(:force)
        else
          Tailwind.install()
        end

      {_, _} ->
        Mix.raise("""
        Invalid arguments to tailwind.install, expected one of:
            mix tailwind.install
            mix tailwind.install --force
        """)
    end
  end
end