Current section
Files
Jump to
Current section
Files
mix.exs
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