Skip to main content

lib/mix/tasks/circuits_ft232h.install.ex

if Code.ensure_loaded?(Igniter) do
  defmodule Mix.Tasks.CircuitsFt232h.Install do
    @moduledoc """
    Configures the host application to use the FT232H backends for
    `circuits_i2c`, `circuits_spi`, and `circuits_gpio` in the `:dev`
    environment.

        mix igniter.install circuits_ft232h
    """
    @shortdoc "Wire up CircuitsFT232H backends in config/dev.exs"

    use Igniter.Mix.Task

    @impl Igniter.Mix.Task
    def info(_argv, _composing_task) do
      %Igniter.Mix.Task.Info{
        group: :circuits_ft232h,
        example: "mix igniter.install circuits_ft232h",
        schema: [],
        aliases: []
      }
    end

    @impl Igniter.Mix.Task
    def igniter(igniter) do
      igniter
      |> Igniter.Project.Config.configure(
        "dev.exs",
        :circuits_i2c,
        [:default_backend],
        CircuitsFT232H.I2C.Backend
      )
      |> Igniter.Project.Config.configure(
        "dev.exs",
        :circuits_spi,
        [:default_backend],
        CircuitsFT232H.SPI.Backend
      )
      |> Igniter.Project.Config.configure(
        "dev.exs",
        :circuits_gpio,
        [:default_backend],
        CircuitsFT232H.GPIO.Backend
      )
    end
  end
else
  defmodule Mix.Tasks.CircuitsFt232h.Install do
    @moduledoc "Install task for CircuitsFT232H — requires the `:igniter` dep."
    @shortdoc "Wire up CircuitsFT232H backends in config/dev.exs"

    use Mix.Task

    @impl Mix.Task
    def run(_argv) do
      Mix.shell().error("""
      `mix circuits_ft232h.install` requires the `igniter` package.

      Add `{:igniter, "~> 0.8"}` to your deps and run `mix deps.get`, or
      install via `mix igniter.install circuits_ft232h`.
      """)

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