Skip to main content

mix.exs

# SPDX-FileCopyrightText: 2026 James Harton
#
# SPDX-License-Identifier: Apache-2.0

defmodule BB.Estimator.Ahrs.MixProject do
  use Mix.Project

  @moduledoc """
  AHRS (Madgwick / Mahony / Complementary) estimators for the Beam Bots framework.
  """

  @version "0.2.0"

  def project do
    [
      aliases: aliases(),
      app: :bb_estimator_ahrs,
      consolidate_protocols: Mix.env() == :prod,
      deps: deps(),
      description: @moduledoc,
      dialyzer: dialyzer(),
      docs: docs(),
      elixir: "~> 1.19",
      elixirc_paths: elixirc_paths(Mix.env()),
      package: package(),
      start_permanent: Mix.env() == :prod,
      version: @version
    ]
  end

  defp dialyzer, do: [plt_add_apps: [:mix]]

  defp package do
    [
      maintainers: ["James Harton <james@harton.nz>", "Gus Workman"],
      licenses: ["Apache-2.0", "MIT"],
      links: %{
        "Source" => "https://github.com/beam-bots/bb_estimator_ahrs",
        "Upstream" => "https://github.com/gworkman/ahrs",
        "Sponsor" => "https://github.com/sponsors/jimsynz"
      }
    ]
  end

  def application do
    [
      extra_applications: [:logger]
    ]
  end

  defp docs do
    [
      main: "readme",
      extras: ["README.md"],
      source_ref: "main",
      source_url: "https://github.com/beam-bots/bb_estimator_ahrs"
    ]
  end

  defp aliases, do: []

  defp deps do
    [
      {:bb, bb_dep("~> 0.20")},

      # dev/test
      {:credo, "~> 1.7", only: [:dev, :test], runtime: false},
      {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
      {:doctor, "~> 0.23", only: [:dev, :test], runtime: false},
      {:ex_check, "~> 0.16", only: [:dev, :test], runtime: false},
      {:ex_doc, ">= 0.0.0", only: [:dev, :test], runtime: false},
      {:git_ops, "~> 2.9", only: [:dev, :test], runtime: false},
      {:igniter, "~> 0.6", only: [:dev, :test], runtime: false},
      {:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false}
    ]
  end

  defp elixirc_paths(env) when env in [:dev, :test], do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  defp bb_dep(default) do
    case System.get_env("BB_VERSION") do
      nil -> default
      "local" -> [path: "../bb", override: true]
      "main" -> [git: "https://github.com/beam-bots/bb.git", override: true]
      version -> "~> #{version}"
    end
  end
end