-
Notifications
You must be signed in to change notification settings - Fork 97
/
Makefile
161 lines (124 loc) · 4.33 KB
/
Makefile
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Configuration
# -------------
APP_VERSION ?= `grep -E '@version "([0-9\.]*)"' mix.exs | cut -d '"' -f2`
DOCKER_IMAGE_TAG ?= latest
GIT_REVISION ?= `git rev-parse HEAD`
# Introspection targets
# ---------------------
.PHONY: help
help: header targets
.PHONY: header
header:
@echo "\033[34mEnvironment\033[0m"
@echo "\033[34m---------------------------------------------------------------\033[0m"
@printf "\033[33m%-23s\033[0m" "APP_VERSION"
@printf "\033[35m%s\033[0m" $(APP_VERSION)
@echo ""
@printf "\033[33m%-23s\033[0m" "GIT_REVISION"
@printf "\033[35m%s\033[0m" $(GIT_REVISION)
@echo ""
@printf "\033[33m%-23s\033[0m" "DOCKER_IMAGE_TAG"
@printf "\033[35m%s\033[0m" $(DOCKER_IMAGE_TAG)
@echo "\n"
.PHONY: targets
targets:
@echo "\033[34mTargets\033[0m"
@echo "\033[34m---------------------------------------------------------------\033[0m"
@perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-22s\033[0m %s\n", $$1, $$2}'
# Build targets
# -------------
.PHONY: dependencies
dependencies: dependencies-mix dependencies-npm ## Install dependencies required by the application
.PHONY: dependencies-mix
dependencies-mix:
mix deps.get --force
.PHONY: dependencies-npm
dependencies-npm: dependencies-npm-root dependencies-npm-webapp dependencies-npm-cli dependencies-npm-jipt
.PHONY: dependencies-npm-root
dependencies-npm-root:
npm install
.PHONY: dependencies-npm-webapp
dependencies-npm-webapp:
npm install --prefix webapp
.PHONY: dependencies-npm-cli
dependencies-npm-cli:
npm install --prefix cli
.PHONY: dependencies-npm-jipt
dependencies-npm-jipt:
npm install --prefix jipt
.PHONY: build
build: ## Build the Docker image for the OTP release
docker build --rm --tag accent:$(DOCKER_IMAGE_TAG) .
.PHONY: compose-build
compose-build: ## Build the Docker image from the docker-compose.yml file
docker-compose build
.PHONY: build-language-tool
build-language-tool:
rm -f vendor/language_tool/priv/native/language-tool.jar
cd vendor/language_tool/priv/native/languagetool && ./gradlew shadowJar
cp vendor/language_tool/priv/native/languagetool/app/build/libs/language-tool.jar priv/native/language-tool.jar
# CI targets
# ----------
.PHONY: lint
lint: lint-compile lint-format lint-credo lint-eslint lint-prettier lint-template-hbs ## Run lint tools on the code
.PHONY: lint-compile
lint-compile:
mix compile --warnings-as-errors --force
.PHONY: lint-format
lint-format:
mix format --dry-run --check-formatted
.PHONY: lint-credo
lint-credo:
mix credo --strict
.PHONY: lint-eslint
lint-eslint:
npx eslint --ext .js,.ts ./webapp/app ./cli ./jipt
.PHONY: lint-prettier
lint-prettier:
npx prettier --trailing-comma none --check './{webapp,jipt,cli}/!(node_modules)/**/*.{js,ts,json,svg,scss,md,hbs}' '*.md'
.PHONY: lint-template-hbs
lint-template-hbs:
npx ember-template-lint 'webapp/app/**/*.hbs' --config-path './webapp/.template-lintrc'
.PHONY: type-check
type-check: typescript-check dialyzer-check ## Run type-checking tools on the code
cd webapp && npx tsc
cd cli && npx tsc
cd jipt && npx tsc
.PHONY: typescript-check
typescript-check: ## Type-check TypeScript files
cd webapp && npx tsc
cd cli && npx tsc
cd jipt && npx tsc
.PHONY: dialyzer-check
dialyzer-check: ## Type-check Elixir files
mix dialyzer
.PHONY: test
test: test-api
.PHONY: test-api
test-api: ## Run the backend test suite
mix test
.PHONY: test-coverage
test-coverage: ## Generate the code coverage report
mix coveralls
.PHONY: format
format: format-elixir format-prettier ## Run formatting tools on the code
.PHONY: format-elixir
format-elixir:
mix format
.PHONY: format-prettier
format-prettier:
npx prettier --write --single-quote --trailing-comma none --no-bracket-spacing './{webapp,jipt,cli}/!(node_modules)/**/*.{js,ts,json,svg,scss,md,hbs}' '*.md'
# Development targets
# -------------------
.PHONY: dev-start-postgresql
dev-start-postgresql: ## Run a PostgreSQL server inside of a Docker Compose environment
docker-compose up --detach postgresql
.PHONY: dev-start-application
dev-start-application: ## Run the OTP release inside of a Docker Compose environment
docker-compose up application
.PHONY: dev-start
dev-start: ## Start every service of in the Docker Compose environment
docker-compose up
.PHONY: dev-stop
dev-stop: ## Stop every service of in the Docker Compose environment
docker-compose down