defmodule Versionise.MixProject do use Mix.Project @version "1.0.0" @source_url "https://github.com/dylanblakemore/versionise" def project do [ app: :versionise, version: @version, elixir: "~> 1.12", start_permanent: Mix.env() == :prod, deps: deps(), aliases: aliases(), dialyzer: dialyzer(), description: description(), package: package(), docs: docs(), name: "Versionise", source_url: @source_url, homepage_url: @source_url ] end # 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 [ {:ex_doc, "~> 0.31", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false} ] end defp aliases do [ precommit: ["format --check-formatted", "test", "credo --strict", "dialyzer"] ] end def cli do [ preferred_envs: [precommit: :test] ] end defp dialyzer do [ plt_file: {:no_warn, "priv/plts/dialyzer.plt"}, plt_add_apps: [:mix, :ex_unit], flags: [:error_handling, :underspecs], ignore_warnings: ".dialyzer_ignore.exs" ] end defp description do """ Interactive versioning and release automation for Elixir packages. Guides you through version bumps, changelog management, git operations, and publishing with interactive prompts. """ end defp package do [ name: "versionise", files: ~w(lib .formatter.exs mix.exs README.md LICENSE CHANGELOG.md), maintainers: ["Dylan Blakemore"], licenses: ["MIT"], links: %{ "GitHub" => @source_url, "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md" } ] end defp docs do [ main: "readme", source_ref: "v#{@version}", source_url: @source_url, extras: ["README.md", "CHANGELOG.md", "LICENSE"], authors: ["Dylan Blakemore"] ] end end