-
-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathmix.exs
121 lines (111 loc) · 3.06 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
115
116
117
118
119
120
121
defmodule Lexical.LanguageServer.MixProject do
Code.require_file("mix_dialyzer.exs")
use Mix.Project
def project do
[
apps_path: "apps",
version: "0.1.0",
start_permanent: Mix.env() == :prod,
deps: deps(),
releases: releases(),
aliases: aliases(),
docs: docs(),
name: "Lexical",
consolidate_protocols: Mix.env() != :test,
dialyzer: Mix.Dialyzer.config()
]
end
defp deps do
[
{:ex_doc, "~> 0.29.1", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test]},
Mix.Dialyzer.dependency()
]
end
defp docs do
[
main: "Lexical",
deps: [jason: "https://hexdocs.pm/jason/Jason.html"],
extras: ~w(README.md pages/architecture.md),
filter_modules: fn mod_name, _ ->
case Module.split(mod_name) do
["Lexical", "Protocol", "Requests" | _] -> true
["Lexical", "Protocol", "Notifications" | _] -> true
["Lexical", "Protocol", "Responses" | _] -> true
["Lexical", "Protocol" | _] -> false
_ -> true
end
end,
groups_for_modules: [
Core: ~r/Lexical.^(RemoteControl|Protocol|Server)/,
"Remote Control": ~r/Lexical.RemoteControl/,
"Protocol Requests": ~r/Lexical.Protocol.Requests/,
"Protocol Notifications": ~r/Lexical.Protocol.Notifications/,
"Protocol Responses": ~r/Lexical.Protocol.Responses/,
Server: ~r/Lexical.Server/
]
]
end
defp releases do
[
lexical: [
applications: [
server: :permanent,
remote_control: :load,
mix: :load
],
include_executables_for: [:unix],
include_erts: false,
cookie: "lexical",
rel_templates_path: "rel/deploy",
strip_beams: false,
steps: [&maybe_namespace/1, :assemble, &maybe_namespace_release/1]
],
lexical_debug: [
applications: [
server: :permanent,
remote_control: :load,
mix: :load
],
include_executables_for: [:unix],
include_erts: false,
path: "lexical_debug",
cookie: "lexical",
rel_templates_path: "rel/debug",
strip_beams: false
],
remote_control: [
applications: [remote_control: :permanent],
include_erts: false,
include_executables_for: [],
strip_beams: false
]
]
end
defp maybe_namespace(%Mix.Release{} = release) do
if System.get_env("NAMESPACE") do
Mix.Task.run("namespace.beams", [release.path])
end
release
end
defp maybe_namespace_release(%Mix.Release{} = release) do
if System.get_env("NAMESPACE") do
Mix.Task.run("namespace.release")
end
release
end
defp maybe_clean(_) do
if System.get_env("NAMESPACE") do
Mix.Task.run("clean")
end
end
defp aliases do
[
release: [&maybe_clean/1, "release", &maybe_clean/1],
compile: "compile --docs --debug-info",
credo: "credo --strict",
docs: "docs --html",
test: "test --no-start"
]
end
end