Skip to main content

mix.exs

defmodule HexorcistUpdate.MixProject do
  use Mix.Project

  @version "0.4.0"
  @source_url "https://git.sr.ht/~sbr/hexorcist"

  def project do
    [
      app: :hexorcist_update,
      version: @version,
      elixir: "~> 1.16",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      description:
        "Client for Hexorcist: applies a project's upgrade plan locally " <>
          "(mix deps.update), test-gated, leaving a reviewable diff.",
      source_url: @source_url,
      docs: docs(),
      package: package()
    ]
  end

  # No runtime deps: uses OTP's :inets/:ssl (httpc) and Elixir 1.18+ JSON, so it
  # can be installed as an archive without dragging deps into the user's project.
  def application, do: [extra_applications: [:inets, :ssl]]

  # ex_doc is dev-only/runtime: false — required by `mix hex.publish` to build
  # the docs, but never part of the published archive's (empty) dependency tree.
  defp deps do
    [
      {:ex_doc, ">= 0.0.0", only: :dev, runtime: false},
      {:credo, ">= 0.0.0", only: [:dev, :test], runtime: false}
    ]
  end

  defp docs do
    [
      main: "readme",
      extras: ["README.md", "LICENSE"],
      source_url: @source_url
    ]
  end

  defp package do
    [
      licenses: ["BSD-3-Clause"],
      files: ~w(lib mix.exs README.md LICENSE .formatter.exs),
      links: %{
        "Source" => @source_url,
        "Hexorcist" => "https://hexorcist.net"
      }
    ]
  end
end