defmodule RaftEx.MixProject do use Mix.Project @source_url "https://github.com/manhvu/raft_ex" @version "0.0.2" def project do [ app: :raft_ex, version: @version, elixir: "~> 1.15", start_permanent: Mix.env() == :prod, deps: deps(), description: description(), package: package(), docs: docs(), test_coverage: [tool: ExCoveralls], elixirc_paths: elixirc_paths(Mix.env()), dialyzer: [ plt_add_apps: [:mix, :ex_unit], plt_core_path: "priv/plts", plt_local_path: "priv/plts", plt_file: {:no_warn, "priv/plts/dialyzer.plt"}, flags: [ :error_handling, :underspecs, :unmatched_returns, :unknown ], ignore_warnings: ".dialyzer_ignore.exs" ], aliases: aliases() ] end def cli do [ preferred_envs: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test, "coveralls.json": :test ] ] end defp elixirc_paths(:test), do: ["lib", "test/fixtures"] defp elixirc_paths(_), do: ["lib"] def application do [extra_applications: [:logger, :crypto], mod: {RaftEx.Application, []}] end defp deps do [ {:seshat, "~> 0.6"}, {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, # Test dependencies {:excoveralls, "~> 0.18", only: :test}, # Code quality {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false} ] end defp description do "Elixir port of RabbitMQ RA Raft consensus. Implements leader election, log replication, snapshots, and cluster management. APIs are unstable and under active development." end defp package do [ maintainers: ["Maintainer Name"], licenses: ["MPL-2.0", "Apache-2.0"], links: %{ "GitHub" => @source_url, "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md" }, files: ~w(lib mix.exs README.md CHANGELOG.md LICENSE LICENSE-APACHE2 LICENSE-MPL-RabbitMQ) ] end defp docs do [ main: "readme", extras: ["README.md", "CHANGELOG.md"], source_url: @source_url, source_ref: "v#{@version}", formatters: ["html"] ] end defp aliases do [ quality: ["format", "credo --strict", "dialyzer"], "quality.ci": [ "format --check-formatted", "credo --strict", "dialyzer" ] ] end end