defmodule Outbox.MixProject do
use Mix.Project
@version "0.1.0-beta.2"
@source_url "https://github.com/Arsenalist/outbox"
@moduledoc false
# Outbox — transactional outbox + Oban fan-out + Phoenix.PubSub
# broadcaster for Phoenix/Ecto/Oban apps. Host-agnostic by
# construction: runtime deps locked to
# `[:ecto_sql, :oban, :phoenix_pubsub, :jason]`, host injects its
# Repo via `config :outbox, Outbox, repo: MyApp.Repo`, and
# `test/outbox/architecture_test.exs` guards `lib/` against
# host-app references. See README.md for install and usage.
def project do
[
app: :outbox,
version: @version,
elixir: "~> 1.19",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
name: "Outbox",
description: description(),
package: package(),
source_url: @source_url,
homepage_url: @source_url
]
end
def application do
[extra_applications: [:logger]]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:ecto_sql, "~> 3.10"},
{:oban, "~> 2.18"},
{:phoenix_pubsub, "~> 2.1"},
{:jason, "~> 1.4"},
{:postgrex, ">= 0.0.0", only: :test},
{:ex_doc, "~> 0.34", only: :dev, runtime: false}
]
end
defp description do
"Transactional outbox + Oban fan-out + Phoenix.PubSub broadcaster for Phoenix/Ecto apps. " <>
"Minimal, opinionated, drop-in."
end
defp package do
[
licenses: ["MIT"],
maintainers: ["Zarar Siddiqi"],
links: %{
"GitHub" => @source_url,
"Changelog" => "#{@source_url}/blob/main/CHANGELOG.md"
},
files: ~w(lib mix.exs README.md LICENSE CHANGELOG.md CONTRIBUTING.md CODE_OF_CONDUCT.md)
]
end
end