defmodule Grizzly.MixProject do use Mix.Project @version "9.1.2" def project do [ app: :grizzly, version: @version, elixir: "~> 1.16", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, deps: deps(), dialyzer: dialyzer(), description: description(), package: package(), docs: docs(), test_coverage: [ ignore_modules: [~r/^GrizzlyTest/, ~r/^Mock/, ~r/^Mix/] ] ] end def application do [ extra_applications: [:logger, :crypto, :ssl, :sasl] ] end def cli do [ preferred_envs: ["hex.publish": :docs, docs: :docs, dialyzer: :test] ] end def elixirc_paths(:test), do: ["test/support", "lib"] def elixirc_paths(_), do: ["lib"] defp deps do [ {:alarmist, "~> 0.4", only: [:test]}, {:beam_notify, "~> 1.0 or ~> 0.2.0"}, {:cerlc, "~> 0.2"}, {:circuits_uart, "~> 1.0"}, {:circular_buffer, "~> 1.0 or ~> 0.4.2"}, {:credo_binary_patterns, "~> 0.2.3", only: [:dev, :test], runtime: false}, {:credo, "~> 1.4", only: [:dev, :test], runtime: false}, {:ctr_drbg, "~> 0.1"}, {:dialyxir, "~> 1.4.0", only: [:test, :dev], runtime: false}, {:ex_doc, "~> 0.21", only: [:docs, :test], runtime: false}, {:exmodem, "~> 0.1"}, {:exqlite, "~> 0.33"}, {:junit_formatter, "~> 3.3", only: :test}, {:mimic, "~> 2.0", only: [:dev, :test]}, {:muontrap, "~> 1.6"}, {:nimble_options, "~> 1.0"}, {:property_table, "~> 0.3"}, {:quokka, "~> 2.11", only: [:dev, :test], runtime: false}, {:sweet_xml, "~> 0.7", only: [:dev, :test]}, {:telemetry_registry, "~> 0.3"}, {:telemetry, "~> 0.4.3 or ~> 1.0"}, {:thousand_island, "~> 1.3"} ] end defp dialyzer() do ci_opts = if System.get_env("CI") do [plt_core_path: "_build/plts", plt_local_path: "_build/plts"] else [] end [ flags: [:unmatched_returns, :error_handling, :missing_return, :extra_return], plt_add_apps: [:mix, :ex_unit] ] ++ ci_opts end defp description do "Elixir Z-Wave library" end defp package do [ licenses: ["Apache-2.0"], links: %{"GitHub" => "https://github.com/smartrent/grizzly"} ] end defp docs() do [ extras: ["README.md", "CHANGELOG.md", "docs/cookbook.md"], main: "readme", logo: "./assets/grizzly-icon-yellow.png", favicon: "./assets/grizzly-icon-yellow.png", source_ref: "v#{@version}", source_url: "https://github.com/smartrent/grizzly", skip_undefined_reference_warnings_on: ["CHANGELOG.md"], groups_for_modules: [ Core: [ Grizzly, ~r/^Grizzly\.Associations/, Grizzly.Events, Grizzly.Inclusions, Grizzly.Indicator, Grizzly.Network, Grizzly.Node, Grizzly.Options, Grizzly.Report, Grizzly.Supervisor, Grizzly.Trace, Grizzly.Trace.Record ], "Command Definitions": [ Grizzly.ZWave.Command, Grizzly.ZWave.Commands, Grizzly.ZWave.CommandSpec, Grizzly.ZWave.ParamSpec ], Behaviours: [ Grizzly.CommandHandler, Grizzly.FirmwareUpdateHandler, Grizzly.InclusionHandler ], "Virtual Devices": [ Grizzly.VirtualDevices, Grizzly.VirtualDevices.Device ], "Z/IP Gateway": [ Grizzly.ZIPGateway, ~r/^Grizzly\.ZIPGateway/ ], "Firmware Updates": [ ~r/^Grizzly\.FirmwareUpdates/ ], Requests: [ ~r/^Grizzly\.(Requests)/ ], Storage: [ ~r/^Grizzly\.Storage/ ], "Z-Wave": [ Grizzly.ZWave, Grizzly.ZWave.CommandClass, Grizzly.ZWave.DeviceClass, Grizzly.ZWave.DeviceClasses, Grizzly.ZWave.DSK, Grizzly.ZWave.Encoding, Grizzly.ZWave.IconType, Grizzly.ZWave.Notifications, Grizzly.ZWave.QRCode, ~r/^Grizzly\.ZWave\.Security/, ~r/^Grizzly\.ZWave\.SmartStart/, Grizzly.ZWave.ZWEnum, Grizzly.Inclusions.ZWaveAdapter ], Transports: [ Grizzly.Transport, Grizzly.Transport.Response, Grizzly.Transports.DTLS, Grizzly.Transports.UDP ], "Z-Wave Protocol": [ ~r/^Grizzly\.ZWave\.CommandClasses/, ~r/^Grizzly\.ZWave\.Commands/ ] ], nest_modules_by_prefix: [ Grizzly.ZWave.CommandClasses, Grizzly.ZWave.Commands ], before_closing_body_tag: &before_closing_body_tag/1 ] end defp before_closing_body_tag(:html) do """ """ end defp before_closing_body_tag(_), do: "" end