Skip to main content

mix.exs

defmodule AccessGrid.MixProject do
  use Mix.Project

  def project do
    [
      app: :accessgrid,
      name: "AccessGrid",
      description: "An Elixir client for the AccessGrid API",
      version: "0.3.0",
      elixir: "~> 1.17",
      elixirc_paths: elixirc_paths(Mix.env()),
      deps: deps(),
      dialyzer: dialyzer(),
      docs: docs(),
      package: package(),
      source_url: "https://github.com/Access-Grid/accessgrid-ex",
      homepage_url: "https://accessgrid.com/docs",
      start_permanent: Mix.env() == :prod
    ]
  end

  defp package do
    [
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/Access-Grid/accessgrid-ex",
        "AccessGrid API Docs" => "https://accessgrid.com/docs"
      }
    ]
  end

  defp docs do
    [
      main: "AccessGrid",
      extras: [
        "guides/testing.md",
        "LICENSE"
      ],
      groups_for_modules: [
        "API Resources": [
          AccessGrid.Console,
          AccessGrid.AccessPasses
        ],
        Structs: [
          AccessGrid.AccessPass,
          AccessGrid.CardTemplate,
          AccessGrid.CardTemplate.PublishResult,
          AccessGrid.CardTemplate.Result,
          AccessGrid.CardTemplate.Summary,
          AccessGrid.CardTemplatePair,
          AccessGrid.CardTemplatePair.Summary,
          AccessGrid.CredentialProfile,
          AccessGrid.Event,
          AccessGrid.HidOrg,
          AccessGrid.IosPreflight,
          AccessGrid.LandingPage,
          AccessGrid.LedgerItem,
          AccessGrid.LedgerItem.AccessPass,
          AccessGrid.LedgerItem.CardTemplate,
          AccessGrid.SmartTapReveal,
          AccessGrid.Webhook
        ],
        Core: [
          AccessGrid.Client,
          AccessGrid.Types
        ],
        Utilities: [
          AccessGrid.Params,
          AccessGrid.Utils
        ],
        HTTP: [
          AccessGrid.HttpClient,
          AccessGrid.HttpClient.Behaviour,
          AccessGrid.HttpClient.Req,
          AccessGrid.HttpFailure,
          AccessGrid.HttpResponse
        ]
      ]
    ]
  end

  defp elixirc_paths(:test), do: ["lib", "test/support"]
  defp elixirc_paths(_), do: ["lib"]

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
      extra_applications: [:logger]
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:credo, "~> 1.7", runtime: false, only: [:dev, :test]},
      {:dialyxir, "~> 1.4", runtime: false, only: [:dev, :test]},
      {:doctor, "~> 0.22", runtime: false, only: [:dev, :test]},
      {:ex_doc, "~> 0.40", runtime: false, only: :dev},
      {:gestalt, "~> 2.0"},
      {:mix_audit, "~> 2.1", runtime: false, only: [:dev, :test]},
      {:mix_test_interactive, "~> 5.1", runtime: false, only: [:dev, :test]},
      {:mox, "~> 1.2", only: :test},
      # Required by Req.Test for HTTP stubbing in tests.
      {:plug, "~> 1.14", only: :test},
      {:req, "~> 0.5.17"}
    ]
  end

  defp dialyzer do
    [
      plt_add_apps: [:ex_unit, :mix],
      plt_add_deps: :app_tree,
      plt_core_path: "_build/plts/#{Mix.env()}",
      plt_local_path: "_build/plts/#{Mix.env()}"
    ]
  end
end