defmodule Xb5.MixProject do use Mix.Project @version "1.0.0" @source_url "https://github.com/g-andrade/xb5_elixir" def project do mix_env = Mix.env() [ app: :xb5_elixir, version: @version, description: description(), elixir: "~> 1.14", start_permanent: mix_env === :prod, deps: deps(), elixirc_paths: elixirc_paths(mix_env), elixirc_options: elixirc_options(mix_env), docs: docs(), test_coverage: [ summary: [ threshold: 93 ] ], dialyzer: [plt_add_apps: [:ex_unit]], package: package() ] end defp description do "B-trees of order 5 (tree, set, order-statistic multiset) for Elixir" end defp deps do List.flatten([ {:ex_doc, "~> 0.30", only: :dev, runtime: false}, {:recon, "~> 2.5", only: [:dev, :test], runtime: false}, {:xb5, "~> 1.0"}, maybe_credo_dep(), maybe_dialyxir_dep(), maybe_styler_dep() ]) end defp maybe_credo_dep do if elixir_vsn_match?("~> 1.12") do {:credo, "~> 1.7", only: [:dev, :test], runtime: false} else [] end end defp maybe_dialyxir_dep do if elixir_vsn_match?("~> 1.12") do {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false} else [] end end defp maybe_styler_dep do if elixir_vsn_match?("~> 1.14") do {:styler, "~> 1.1", only: [:dev, :test], runtime: false} else [] end end defp elixirc_paths(env) do if env === :test do ["lib", "test/extra"] else ["lib"] end end defp elixirc_options(env) do if env === :test do [warnings_as_errors: true] else [] end end defp docs do [ main: "readme", name: "Xb5", source_ref: @version, canonical: "http://hexdocs.pm/xb5_erlang", source_url: @source_url, extras: [ "CHANGELOG.md", "LICENSE.txt", "README.md": [title: "Xb5"] ] ] end defp package do [ maintainers: ["Guilherme Andrade"], licenses: ["MIT"], links: %{ "GitHub" => @source_url } ] end defp elixir_vsn_match?(requirement), do: Version.match?(System.version(), requirement) end