defmodule Guesswork.MixProject do use Mix.Project def project do [ app: :guesswork, version: "0.8.0", elixir: "~> 1.15", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, description: description(), package: package(), deps: deps(), dialyzer: [ plt_file: {:no_warn, "priv/plts/project.plt"} ], test_coverage: [tool: ExCoveralls], preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test, "coveralls.cobertura": :test ], # Docs name: "Guesswork", source_url: "https://gitlab.com/smaller-infinity/guesswork", homepage_url: "https://gitlab.com/smaller-infinity/guesswork", docs: [ # The main page in the docs main: "Guesswork", extras: ["README.md"] ++ example_files() ] ] end defp package do [ licenses: ["MPL-2.0"], files: ~w(lib .formatter.exs mix.exs README* LICENSE* CHANGELOG* examples), links: %{"GitLab" => "https://gitlab.com/smaller-infinity/guesswork"} ] end defp description do """ Guesswork is a logic programming library for Elixir. It is heavily inspired by Prolog, but attempts to use idiomatic Elixir when expressing problems and their solutions. """ end defp example_files do File.ls!("./examples") |> Enum.map(&"examples/#{&1}") end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(:dev), do: ["lib", "benchmarks"] defp elixirc_paths(_), do: ["lib"] # Run "mix help compile.app" to learn about applications. def application do [ extra_applications: [:logger, :tools, :runtime_tools] ] end # Run "mix help deps" to learn about dependencies. defp deps do [ {:stream_split, "~> 0.1.0"}, {:benchee, "~> 1.0", only: :dev}, {:nimble_options, "~> 1.1"}, {:telemetry, "~> 1.0"}, {:doctest_formatter, "~> 0.3.0", runtime: false, only: :dev}, {:ex_doc, "~> 0.31", only: :dev, runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:uuid, "~> 1.1"}, {:kino, "~> 0.13"}, {:excoveralls, "~> 0.18", only: :test}, {:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false} ] end end