defmodule EctoEncrypted.MixProject do use Mix.Project @source_url "https://github.com/UntangleDev/ecto_encrypted" @version "0.1.0" def project do [ app: :ecto_encrypted, version: @version, elixir: "~> 1.15", deps: deps(), description: description(), package: package(), name: "Encrypted", source_url: @source_url, homepage_url: @source_url, docs: docs(), elixirc_paths: elixirc_paths(Mix.env()), dialyzer: [plt_add_apps: [:ecto, :ecto_sql]] ] end def application do [ extra_applications: [:crypto] ] end def cli do [preferred_envs: [dialyzer: :test]] end defp deps do [ {:ecto, ecto_requirement()}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:ecto_sql, ecto_sql_requirement(), only: :test}, {:ex_doc, "~> 0.40", only: :dev, runtime: false}, {:postgrex, "~> 0.22", only: :test}, {:stream_data, "~> 1.1", only: :test} ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_env), do: ["lib"] # CI overrides these requirements to exercise the oldest supported Ecto # metadata shape without forcing published users onto one patch line. defp ecto_requirement do System.get_env("ECTO_ENCRYPTED_ECTO_REQUIREMENT", "~> 3.11") end defp ecto_sql_requirement do System.get_env("ECTO_ENCRYPTED_ECTO_SQL_REQUIREMENT", "~> 3.11") end defp description do "Authenticated, non-deterministic encryption for Ecto fields" end defp package do [ maintainers: ["Billy Grant"], licenses: ["MIT"], links: %{ "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md", "GitHub" => @source_url, "HexDocs" => "https://hexdocs.pm/ecto_encrypted" }, files: ~w(lib mix.exs README.md FORMAT.md DECISIONS.md CHANGELOG.md LICENSE .formatter.exs) ] end defp docs do [ main: "readme", source_ref: "v#{@version}", source_url: @source_url, extras: ["README.md", "FORMAT.md", "DECISIONS.md", "CHANGELOG.md", "LICENSE"], groups_for_modules: [ Operations: [Encrypted.Rotate] ] ] end end