defmodule DSpace.MixProject do use Mix.Project @version "0.1.1" @description "DSpace client library for Elixir" @source_url "https://github.com/moefuerst/dspace_ex" def project do [ app: :dspace_ex, version: @version, elixir: "~> 1.18", elixirc_options: elixirc_options(), elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, deps: deps(), description: @description, package: package(), docs: docs(), aliases: aliases(), dialyzer: dialyzer(), source_url: @source_url ] end def application do [ extra_applications: [:logger] ] end def cli do [ preferred_envs: [precommit: :test, check: :test, "test.ci": :test, dialyzer: :test] ] end defp elixirc_options do [ no_warn_undefined: [Req] ] end # Specifies which paths to compile per environment. defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp deps do [ {:req, "~> 0.5 or ~> 1.0", optional: true}, # Development and Testing {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:ex_slop, "~> 0.4", only: [:dev, :test], runtime: false}, {:styler, "~> 1.4", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.1", only: [:dev, :test], runtime: false}, {:muex, "~> 0.8.0", only: [:dev, :test], runtime: false}, {:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false}, {:stream_data, "~> 1.2", only: :test}, {:sham, "~> 1.0", only: :test}, {:bandit, "~> 1.0", only: :test} ] end defp aliases do [ precommit: [ "compile --warnings-as-errors", "deps.unlock --unused", "format", "credo --strict", "dialyzer --quiet-with-result", "test" ], check: [ "deps.unlock --check-unused", "format --check-formatted", "credo --strict", "dialyzer --quiet-with-result" ], "deps.audit": [ "hex.audit", "deps.audit" ], "test.ci": [ "test --raise", "muex --optimize --optimize-level conservative --fail-at 80" ] ] end defp docs do [ main: "readme", source_ref: "v#{@version}", source_url: @source_url, extras: extras(), groups_for_modules: groups_for_modules(), skip_undefined_reference_warnings_on: ["CHANGELOG.md"] ] end defp extras do [ "README.md", "CHANGELOG.md", "LICENSE" ] end defp groups_for_modules do [ Client: [ DSpace.API, DSpace.API.Error, DSpace.API.HTTP.Error, DSpace.API.Metadata.Value, DSpace.API.Resource ], "Core Resources": [ DSpace.API.Collection, DSpace.API.Community, DSpace.API.File, DSpace.API.Item, DSpace.API.User ], Access: [ DSpace.API.Auth ], Search: [ DSpace.API.Search, DSpace.API.PID ], Integrations: [ DSpace.API.Source ], "Repository Management": [ DSpace.API.File.FormatRegistry, DSpace.API.Metadata, DSpace.API.Monitor ], "Advanced Customization": [ DSpace.API.HTTP, DSpace.API.HTTP.Req, DSpace.API.HTTP.Response, DSpace.API.Operation, DSpace.API.Operation.JSON, DSpace.API.Operation.Chain, DSpace.API.Operation.Chain.Context, DSpace.API.StreamBuilder, DSpace.API.Transform ] ] end defp dialyzer do [ ignore_warnings: ".dialyzer_ignore.exs", plt_core_path: "priv/plts", plt_file: {:no_warn, "priv/plts/project.plt"}, plt_add_apps: [:ex_unit] ] end defp package do [ name: :dspace_ex, files: ~w(lib .formatter.exs mix.exs README* LICENSE* CHANGELOG*), maintainers: ["Moritz F. Fürst"], licenses: ["AGPL-3.0-only"], source_url: @source_url, links: %{ "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md", "GitHub" => @source_url } ] end end