generated from exercism/generic-test-runner
-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
85 lines (61 loc) · 1.73 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
SHELL := bash
ROOT := $(shell pwd)
VERSION := 0.1.96
BIN := $(ROOT)/bin
SHELLCHECK := $(BIN)/shellcheck
export PATH := $(BIN):$(PATH)
EXPECTED_RESULTS_FILES := \
$(shell find . -name expected_results.json)
SHELL_FILES := $(shell find . -name '*.sh')
SHELLCHECK_VERSION := v0.10.0
SHELLCHECK_REPO := https://github.com/koalaman/shellcheck
SHELLCHECK_RELEASES := $(SHELLCHECK_REPO)/releases/download
SHELLCHECK_DIR := shellcheck-$(SHELLCHECK_VERSION)
SHELLCHECK_TAR := $(SHELLCHECK_DIR).linux.x86_64.tar.xz
SHELLCHECK_RELEASE := \
$(SHELLCHECK_RELEASES)/$(SHELLCHECK_VERSION)/$(SHELLCHECK_TAR)
DOCKER_USER := ingy
DOCKER_VERSION := $(VERSION)
DOCKER_NAME := exercism-$(shell basename $(ROOT))
DOCKER_IMAGE := $(DOCKER_USER)/$(DOCKER_NAME):$(DOCKER_VERSION)
default:
test: test-shellcheck
update: check-dockerfile update-expected
check-dockerfile: Dockerfile
@grep -q '=$(VERSION)' $< || { \
echo "Error: Update the Dockerfile VERSION"; \
exit 1; \
}
update-expected: $(EXPECTED_RESULTS_FILES)
clean:
$(RM) -r shellcheck*
realclean: clean
$(RM) $(SHELLCHECK)
tests/%/expected_results.json: tests/%
$(MAKE) -C $< $(@:$</%=%)
test-shellcheck: $(SHELLCHECK)
@echo '*** Testing shell files pass shellcheck'
$< $(SHELL_FILES)
@echo '*** All shell files are OK'
@echo
ifeq (,$(wildcard $(SHELLCHECK)))
$(SHELLCHECK): $(SHELLCHECK_DIR)
mv $</shellcheck $@
touch $@
$(RM) -r $<
$(RM) $(SHELLCHECK_TAR)
endif
$(SHELLCHECK_DIR): $(SHELLCHECK_TAR)
tar xf $<
$(SHELLCHECK_TAR):
curl -sSOL $(SHELLCHECK_RELEASE)
ifneq (,$(EX_YS_DEV))
DOCKER_DEVEL := -f dev/main.dockerfile
endif
docker-build: check-dockerfile
docker build \
$(DOCKER_DEVEL) \
--tag=$(DOCKER_IMAGE) \
.
docker-push: docker-build
docker push $(DOCKER_IMAGE)