defmodule Angelus.MixProject do use Mix.Project @app :angelus @version "0.0.1" @source_url "https://github.com/MonsignorEduardo/angelus" @priv_paths ["spice_worker"] @cc_precompiler_compilers %{ {:unix, :darwin} => %{include_default_ones: true}, {:unix, :linux} => %{include_default_ones: true} } def project do [ app: @app, version: @version, elixir: "~> 1.19", start_permanent: Mix.env() == :prod, compilers: [:elixir_make] ++ Mix.compilers(), aliases: aliases(), elixirc_paths: elixirc_paths(Mix.env()), deps: deps(), make_precompiler: {:port, CCPrecompiler}, make_precompiler_url: "#{@source_url}/releases/download/v#{@version}/@{artefact_filename}", make_precompiler_filename: "spice_worker", make_precompiler_priv_paths: @priv_paths, cc_precompiler: cc_precompiler(), make_cwd: "native/spice_worker", make_force_build: System.get_env("ANGELUS_FORCE_BUILD") == "1", dialyzer: dialyzer(), description: description(), package: package() ] end def application do [ extra_applications: [:logger], mod: {Angelus.Application, []} ] end defp deps do [ {:cc_precompiler, "~> 0.1", runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:elixir_make, "~> 0.9", runtime: false}, {:ex_doc, "~> 0.40.3", only: :dev, runtime: false, warn_if_outdated: true}, {:jason, "~> 1.4"}, {:nimble_pool, "~> 1.1"}, {:req, "~> 0.5"} ] end defp cc_precompiler do [ only_listed_targets: true, compilers: @cc_precompiler_compilers ] end defp dialyzer do [ plt_add_apps: [:mix], plt_local_path: "priv/plts" ] end defp package do [ maintainers: ["Eduardo Gonzalez"], licenses: ["MIT"], links: %{"GitHub" => @source_url}, files: [ "lib", "native/spice_worker/Makefile", "native/spice_worker/fetch-libs.sh", "native/spice_worker/patches", "native/spice_worker/src", "priv/.gitkeep", "checksum.exs", "mix.exs", "README.md", "LICENSE" ] ] end defp description do """ Elixir ephemeris library backed by NAIF CSPICE and JPL kernels. """ end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_env), do: ["lib"] defp aliases do [ setup: ["deps.get"], consistency: [ "cmd echo Checking format ...", "format", "cmd echo", "cmd echo Checking compile warnings ...", "compile --no-deps-check --force", "cmd echo", "cmd echo Checking Credo ...", "credo -A", "cmd echo", "cmd echo Checking tests ...", "cmd sh -c 'MIX_ENV=test mix test'", "cmd echo" ] ] end end