-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathmix.exs
114 lines (100 loc) · 3 KB
/
mix.exs
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
defmodule Protox.Mixfile do
use Mix.Project
def project() do
[
app: :protox,
version: "2.0.0-dev",
elixir: "~> 1.15",
build_embedded: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
deps: deps(),
test_coverage: [tool: ExCoveralls],
elixirc_paths: elixirc_paths(Mix.env()),
escript: escript(),
name: "Protox",
source_url: "https://github.com/ahamez/protox",
description: description(),
package: package(),
dialyzer: [plt_local_path: "priv/plts"],
docs: docs(),
preferred_cli_env: [muzak: :test]
]
end
defp elixirc_paths(:prod), do: ["lib"]
defp elixirc_paths(_), do: ["lib", "conformance", "benchmark", "test/support"]
def application() do
[
extra_applications: [:benchee, :eex, :mix]
]
end
defp deps() do
[
{:benchee, "~> 1.0", only: [:test, :dev], runtime: false},
{:benchee_html, "~> 1.0", only: [:test, :dev], runtime: false},
{:credo, "~> 1.4", only: [:test, :dev], runtime: false},
{:dialyxir, "~> 1.0", only: [:test, :dev], runtime: false},
{:excoveralls, "~> 0.13", only: [:test], runtime: false},
{:ex_doc, "~> 0.22", only: [:dev], runtime: false},
{:propcheck, github: "alfert/propcheck", ref: "c564e89d", only: [:test, :dev]},
{:stream_data, "~> 1.0", only: [:dev, :test], runtime: false},
{:quokka, "~> 2.0", only: [:dev, :test], runtime: false}
]
|> maybe_add_muzak_pro()
|> maybe_download_protobuf()
end
defp maybe_add_muzak_pro(deps) do
case System.get_env("PROTOX_MUZAK_PRO_CREDS") do
nil ->
deps
creds ->
muzak_pro =
{:muzak, git: "https://#{creds}@github.com/ahamez/muzak.git", tag: "1.1.0", only: [:test]}
[muzak_pro | deps]
end
end
defp maybe_download_protobuf(deps) do
case System.get_env("PROTOX_PROTOBUF_VERSION") do
nil ->
deps
version ->
protobuf =
{:protobuf,
github: "protocolbuffers/protobuf",
tag: "v#{version}",
submodules: true,
app: false,
compile: false,
only: [:dev, :test]}
[protobuf | deps]
end
end
defp description() do
"""
A fast, easy to use and 100% conformant Elixir library for Google Protocol Buffers (aka protobuf)
"""
end
def escript() do
[
# do not start any application: avoid propcheck app to fail when running escript
app: nil,
main_module: Protox.Conformance.Escript,
name: "protox_conformance"
]
end
defp package() do
[
name: :protox,
files: ["lib", "mix.exs", "README*", "LICENSE"],
maintainers: ["Alexandre Hamez"],
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/ahamez/protox"},
exclude_patterns: [".DS_Store"]
]
end
defp docs() do
[
main: "readme",
extras: Path.wildcard("./*.md") ++ Path.wildcard("./benchmark/*.md") ++ Path.wildcard("./documentation/*.md")
]
end
end