argon2id_elixir/mix.exs
2024-11-09 15:24:49 +02:00

128 lines
2.5 KiB
Elixir

defmodule Argon2.MixProject do
use Mix.Project
@source_url "https://code.sipstea.org/jussi/argon2id_elixir"
def project do
[
app: :argon2id_elixir,
version: "1.1.0",
elixir: "~> 1.17",
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
rustler_crates: rustler_crates(),
# Hex
package: package(),
description: "Argon2 password hashing using Rust",
# Docs
name: "Argon2",
docs: docs(),
# Test coverage
test_coverage: [tool: ExCoveralls],
preferred_cli_env: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.post": :test,
"coveralls.html": :test,
"coveralls.json": :test
]
]
end
def application do
[
extra_applications: [:logger]
]
end
defp deps do
[
{:rustler, "~> 0.35.0", runtime: false},
{:ex_doc, "~> 0.34.2", only: :dev, runtime: false},
{:excoveralls, "~> 0.18.3", only: :test},
{:credo, "~> 1.7.10", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4.4", only: [:dev, :test], runtime: false}
]
end
defp aliases do
[
fmt: [
"format",
"cmd cargo fmt --manifest-path native/argon2/Cargo.toml"
],
quality: [
"format",
"cmd cargo fmt --manifest-path native/argon2/Cargo.toml",
"credo --strict",
"dialyzer"
]
]
end
defp rustler_crates do
[
argon2: [
path: "native/argon2",
mode: rustc_mode(),
features: [],
cargomode: cargomode()
]
]
end
defp rustc_mode do
case Mix.env() do
:prod -> :release
_ -> :debug
end
end
defp cargomode do
case Mix.env() do
:prod -> "build"
_ -> "check"
end
end
defp package do
[
name: "argon2id_elixir",
files: [
"lib",
"native",
"mix.exs",
"README.md",
"LICENSE-APACHE",
"LICENSE-MIT",
".formatter.exs"
],
licenses: ["MIT", "Apache-2.0"],
links: %{
"Source repository" => @source_url
},
maintainers: ["Jussi Räsänen"]
]
end
defp docs do
[
main: "Argon2",
source_url: @source_url,
extras: ["README.md", "LICENSE-APACHE", "LICENSE-MIT"],
groups_for_modules: [
Core: [
Argon2,
Argon2.Native
],
Utilities: [
Argon2.Benchmark
]
]
]
end
end