defmodule Bitcraft.MixProject do use Mix.Project @source_url "https://github.com/alboratech/bitcraft" @version "0.1.0" def project do [ app: :bitcraft, version: @version, elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), aliases: aliases(), deps: deps(), # Docs name: "Bitcraft", docs: docs(), # Testing test_coverage: [tool: ExCoveralls], preferred_cli_env: [ check: :test, coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ], # Dialyzer dialyzer: dialyzer(), # Hex package: package(), description: """ A toolkit for encoding/decoding bit strings and DSL for binary protocols bit blocks. """ ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] def application, do: [] defp deps do [ # Test & Code Analysis {:excoveralls, "~> 0.13", only: :test}, {:credo, "~> 1.5", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}, {:sobelow, "~> 0.10", only: [:dev, :test], runtime: false}, # Docs {:ex_doc, "~> 0.23", only: :dev, runtime: false} ] end defp aliases do [ check: [ "compile --warnings-as-errors", "format --check-formatted", "credo --strict", "coveralls.html", "sobelow --exit --skip", "dialyzer --format short" ] ] end defp package do [ name: :bitcraft, maintainers: [ "Carlos Bolanos (GH: cabol)", "Albora Technologies" ], licenses: ["MIT"], links: %{"GitHub" => @source_url} ] end defp docs do [ main: "Bitcraft", source_ref: "v#{@version}", canonical: "http://hexdocs.pm/bitcraft", source_url: @source_url ] end defp dialyzer do [ plt_file: {:no_warn, "priv/plts/" <> plt_file_name()}, flags: [ :unmatched_returns, :error_handling, :race_conditions, :no_opaque, :unknown, :no_return ] ] end defp plt_file_name do "dialyzer-#{Mix.env()}-#{System.otp_release()}-#{System.version()}.plt" end end