-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
116 lines (87 loc) · 4.01 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
## REFERENCES:
## (1) Passing environment variable with fallback value to Makefile:
## https://stackoverflow.com/a/70772707/6366150
## (2) Export environment variables inside "make environment"
## https://stackoverflow.com/a/49524393/6366150
## (3) Uppercase to lowercase and vice versa
## https://community.unix.com/t/uppercase-to-lowercase-and-vice-versa/285278/6
## (4) How do I trim leading and trailing whitespace from each line of some output?
## https://unix.stackexchange.com/a/279222/233927
############################################################################
## (1) ## Allowed values: info | warn | error | debug
LOG_LEVEL ?= info
## (3) (4)
LOG_LEVEL :=$(shell echo '${LOG_LEVEL}'| tr '[:lower:]' '[:upper:]'| tr -d '[:blank:]')
## (1) ## Allowed values: true | false
BRUTEFORCE ?= false
## (3) (4)
BRUTEFORCE :=$(shell echo '${BRUTEFORCE}'| tr '[:lower:]' '[:upper:]'| tr -d '[:blank:]')
# Package Manager
# GRADLE=./gradlew
GRADLE=gradle
# DOCKER
BUILDKIT_PROGRESS=plain
DOCKER_COMPOSE=docker compose
.MAIN: test
.PHONY: all clean dependencies help list test outdated
.EXPORT_ALL_VARIABLES: # (2)
help: list
list:
@LC_ALL=C $(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
env:
@echo "################################################################################"
@echo "## Environment: ################################################################"
@echo "################################################################################"
@printenv | grep -E "LOG_LEVEL|BRUTEFORCE|BUILDKIT_PROGRESS"
@echo "################################################################################"
dependencies:
@echo "################################################################################"
@echo "## Dependencies: ###############################################################"
@echo "################################################################################"
$(GRADLE) dependencies
@echo "################################################################################"
lint/markdown:
markdownlint '**/*.md' --ignore node_modules && echo '✔ Your code looks good.'
lint/yaml:
yamllint --stric . && echo '✔ Your code looks good.'
lint: lint/markdown lint/yaml test/styling test/static
test/styling: dependencies
$(GRADLE) --console=verbose clean checkstyleMain checkstyleTest
test/static: dependencies
test: env
$(GRADLE) --console=verbose clean test -x checkstyleMain checkstyleTest
coverage: test
coverage/html: test
open algorithm-exercises-java/build/reports/jacoco/test/html/index.html
outdated:
clean:
$(GRADLE) clean
build: env
$(GRADLE) --console=verbose clean build \
--exclude-task test \
--exclude-task checkstyleMain \
--exclude-task checkstyleTest
compose/build: env
${DOCKER_COMPOSE} --profile lint build
${DOCKER_COMPOSE} --profile testing build
${DOCKER_COMPOSE} --profile production build
compose/rebuild: env
${DOCKER_COMPOSE} --profile lint build --no-cache
${DOCKER_COMPOSE} --profile testing build --no-cache
${DOCKER_COMPOSE} --profile production build --no-cache
compose/lint/markdown: compose/build
${DOCKER_COMPOSE} --profile lint run --rm algorithm-exercises-java-lint make lint/markdown
compose/lint/yaml: compose/build
${DOCKER_COMPOSE} --profile lint run --rm algorithm-exercises-java-lint make lint/yaml
compose/test/styling: compose/build
${DOCKER_COMPOSE} --profile lint run --rm algorithm-exercises-java-lint make test/styling
compose/test/static: compose/build
${DOCKER_COMPOSE} --profile lint run --rm algorithm-exercises-java-lint make test/static
compose/lint: compose/lint/markdown compose/lint/yaml compose/test/styling compose/test/static
compose/test: compose/build
${DOCKER_COMPOSE} --profile testing run --rm algorithm-exercises-java-test make test
compose/run: compose/build
${DOCKER_COMPOSE} --profile testing run --rm algorithm-exercises-java make run
all: env dependencies lint test
run:
ls -alh