-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmix.exs
More file actions
122 lines (112 loc) · 3.92 KB
/
Copy pathmix.exs
File metadata and controls
122 lines (112 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
defmodule StatifierPersistence.MixProject do
use Mix.Project
@version "0.11.0"
@source_url "https://github.com/riddler/statifier_persistence"
def project do
[
app: :statifier_persistence,
version: @version,
elixir: "~> 1.18",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
name: "StatifierPersistence",
description: "Durable stepper and storage adapters for Statifier",
source_url: @source_url,
docs: docs(),
package: package(),
test_coverage: [tool: ExCoveralls],
dialyzer: [plt_add_apps: [:ex_unit]],
preferred_cli_env: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.html": :test
]
]
end
def application do
[
extra_applications: [:logger]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
# Hexdocs configuration. These paths are read off the publisher's disk at
# `mix docs` time and need no entry in package()'s files: list - the docs
# tarball hexdocs hosts is built separately from the package tarball
# `mix deps.get` fetches.
defp docs do
[
name: "StatifierPersistence",
source_ref: "v#{@version}",
canonical: "https://hexdocs.pm/statifier_persistence",
source_url: @source_url,
main: "readme",
extras: [
"README.md",
"CHANGELOG.md",
"docs/restart-demo.md",
"docs/non-postgres-backends.md"
],
groups_for_extras: [
Guides: ~r{docs/}
],
skip_undefined_reference_warnings_on: ["CHANGELOG.md"]
]
end
defp package do
[
name: "statifier_persistence",
licenses: ["MIT"],
files: ~w(lib mix.exs README.md LICENSE CHANGELOG.md),
links: %{
"GitHub" => @source_url,
"Changelog" => "#{@source_url}/blob/main/CHANGELOG.md"
}
]
end
defp deps do
[
statifier_dep(),
# Direct, not transitive: this package calls :telemetry.execute/3
# itself (ADR-0009 decision 1), and a package that does declares it.
# It is already in every dependent's tree through statifier, so no
# host's lock file grows.
{:telemetry, "~> 1.3"},
{:uxid, "~> 2.0"},
{:ecto_sql, "~> 3.10", optional: true},
# Dev / test
{:ex_quality, "~> 0.14", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:excoveralls, "~> 0.18", only: :test},
{:ex_doc, "~> 0.40", only: :dev, runtime: false},
{:postgrex, "~> 0.19", only: :test},
# Test-only, and only so the migration helper's non-Postgres path is
# exercised by a real adapter rather than asserted about (sp-11w).
# ADR-0005 decision 2's Postgres harness is untouched: every
# storage and conformance test still runs against Postgres.
{:ecto_sqlite3, "~> 0.21", only: :test}
]
end
# The Ecto layer's dependency shape (ecto_sql optional here vs a separate
# statifier_ecto package, uxid required, postgrex test-only) is decided in
# ADR-0005 - see docs/adr/0005-ecto-in-package-and-postgres-test-harness.md.
#
# Export STATIFIER_PATH to point at a local checkout while co-developing a
# change that spans both repos. It is an env var rather than a mix.exs edit
# so the override never lands in a commit by accident.
#
# The floor is 2.2.1: the first release carrying the queue-discard-on-exit
# fix this package's completion conformance cases need (a session that
# reaches a top-level <final> leaves an empty internal queue, so a :done
# MachineState is quiescent by construction and reaches the persist tail).
defp statifier_dep do
case System.get_env("STATIFIER_PATH") do
nil ->
{:statifier, "~> 2.2 and >= 2.2.1"}
path ->
{:statifier, path: path, override: true}
end
end
end