Packages
x3m_system
0.9.1
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
retired
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
retired
0.7.7
0.7.6
retired
0.7.5
0.7.4
retired
0.7.3
retired
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
retired
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.1.1
0.1.0
Building blocks for distributed and/or CQRS/ES systems
Current section
Files
Jump to
Current section
Files
x3m_system
mix.exs
mix.exs
defmodule X3m.System.MixProject do
use Mix.Project
@version "0.9.1"
@source_url "https://github.com/x3m-ex/system"
def project do
[
app: :x3m_system,
version: @version,
elixir: "~> 1.17",
source_url: @source_url,
homepage_url: @source_url,
description: """
Building blocks for distributed and/or CQRS/ES systems
""",
package: _package(),
start_permanent: true,
test_coverage: [tool: ExCoveralls],
name: "X3m System",
docs: _docs(),
aliases: _aliases(),
deps: _deps(),
dialyzer: [plt_add_apps: [:ex_unit, :local_cluster, :ecto]],
elixirc_paths: _elixirc_paths(Mix.env())
]
end
defp _docs do
[
main: "readme",
source_ref: "v#{@version}",
extras: [
"README.md",
"guides/getting-started.md",
"guides/messaging.md",
"guides/aggregates-and-event-sourcing.md",
"guides/distribution.md",
"guides/scheduling.md",
"CHANGELOG.md"
],
groups_for_extras: [
Guides: ~r"guides/"
],
groups_for_modules: [
Messaging: [
X3m.System.Message,
X3m.System.Dispatcher,
X3m.System.Router,
X3m.System.Response
],
"Aggregates & Event Sourcing": [
X3m.System.MessageHandler,
X3m.System.Aggregate,
X3m.System.Aggregate.State,
X3m.System.Aggregate.Repo,
X3m.System.Aggregate.TestSupport
],
Scheduling: [
X3m.System.Scheduler
],
Setup: [
X3m.System.LocalAggregates,
X3m.System.LocalAggregatesSupervision
]
]
]
end
def application do
[
mod: {X3m.System.Application, []},
extra_applications: [:logger]
]
end
def cli do
[
preferred_envs: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.post": :test,
"coveralls.html": :test,
docs: :dev,
dialyzer: :test,
bless: :test
]
]
end
defp _elixirc_paths(:test), do: ["lib", "test/support"]
defp _elixirc_paths(_), do: ["lib"]
defp _deps do
[
{:telemetry, "~> 0.4 or ~> 1.0"},
# needed when working with aggregates
{:elixir_uuid, "~> 1.2", optional: true},
{:ecto, "~> 3.0", only: :test},
# test dependencies
{:local_cluster, "~> 2.0", only: [:test], runtime: false},
{:dialyxir, "~> 1.1", only: [:test, :dev], runtime: false},
{:ex_doc, "~> 0.21", only: [:dev, :test], runtime: false},
{:excoveralls, "~> 0.13", only: :test}
]
end
defp _aliases do
[
bless: [&_bless/1]
]
end
defp _bless(_) do
[
{"format", ["--check-formatted"]},
{"compile", ["--warnings-as-errors", "--force"]},
{"coveralls.html", []},
{"dialyzer", []},
{"docs", []}
]
|> Enum.each(fn {task, args} ->
IO.ANSI.format([:cyan, "Running #{task} with args #{inspect(args)}"])
|> IO.puts()
Mix.Task.run(task, args)
end)
end
defp _package do
[
files: [
".formatter.exs",
"lib",
"guides",
"mix.exs",
"README*",
"CHANGELOG*",
"LICENSE*"
],
maintainers: ["Milan Burmaja"],
licenses: ["MIT"],
links: %{"GitHub" => @source_url}
]
end
end