generated from devcontainers/feature-starter
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
65 lines (54 loc) · 2.6 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
.SHELLFLAGS = -ec
.ONESHELL:
# Bump version variables
DRY_RUN ?= "false"
# Devcontainer variables
FEATURES ?= common-utils ## Feature to test. Default: 'common-utils'. Options: 'aws-cli', 'common-utils', 'docker-in-docker', 'docker-outside-of-docker', 'terraform'
BASE_IMAGE ?= archlinux:base ## Base image for testing. Must be Arch Linux with 'pacman'. Default: 'archlinux:base'.
PATH_TO_RUN ?= . ## Path to run the tests. Default: . (current directory). Change this in the Makefile or in the environment.
FEATURES_FILTER ?= ## Filter for features. Default: empty. Change this in the Makefile or in the environment.
PRESERVE_TESTCONTAINERS ?= false ## Preserve test containers. Default: false. Change this in the Makefile or in the environment.
# Devcontainer command
DC=devcontainer
DC_TEST=$(DC) features test
# Devcontainer flags
DC_TEST_GLOBAL_FLAGS=--global-scenarios-only
DC_TEST_AUTOGENERATED_FLAGS=--skip-scenarios -f $(FEATURES) -i $(BASE_IMAGE)
DC_TEST_SCENARIOS_FLAGS=-f $(FEATURES) \
--skip-autogenerated \
--skip-duplicated \
--filter $(FEATURES_FILTER) \
--preserve-test-containers $(PRESERVE_TESTCONTAINERS)
# Bump
SCRIPTS_PATH=./scripts
BUMP_VERSION_SCRIPT=$(SCRIPTS_PATH)/bump_version.sh
.PHONY: help
help: ## Display this help message.
@echo "Usage: make [TARGET]"
@echo "Targets:"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m %-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo ""
@echo "Variables:"
@awk 'BEGIN {FS = "##"} /^[a-zA-Z_-]+\s*\?=\s*.*?## / {split($$1, a, "\\s*\\?=\\s*"); printf "\033[33m %-30s\033[0m %s\n", a[1], $$2}' $(MAKEFILE_LIST)
@echo ""
@echo "Variable Values:"
@awk 'BEGIN {FS = "[ ?=]"} /^[a-zA-Z_-]+[ \t]*[?=]/ {print $$1}' $(MAKEFILE_LIST) | \
while read -r var; do \
printf "\033[35m %-30s\033[0m %s\n" "$$var" "$$(make -s -f $(firstword $(MAKEFILE_LIST)) print-$$var)"; \
done
.PHONY: print-%
print-%: ## Helper target to print a variable. Usage: make print-VARIABLE
@printf '%s' "$($*)" | sed 's/^[[:space:]]*//'
.PHONY: test-global
test-global: ## Run global scenario tests.
$(DC_TEST) $(DC_TEST_GLOBAL_FLAGS) $(PATH_TO_RUN)
.PHONY: test-autogenerated
test-autogenerated: ## Run autogenerated tests for a specific feature against a base image. Arguments: FEATURES, BASE_IMAGE.
$(DC_TEST) $(DC_TEST_AUTOGENERATED_FLAGS) $(PATH_TO_RUN)
.PHONY: test-scenarios
test-scenarios: ## Run scenario tests for a specific feature. Argument: FEATURES.
$(DC_TEST) $(DC_TEST_SCENARIOS_FLAGS) $(PATH_TO_RUN)
.PHONY: bump-version
bump-version: ## Run bump_version.sh script. Arguments: DRY_RUN.
chmod +x $(BUMP_VERSION_SCRIPT)
$(BUMP_VERSION_SCRIPT) $(DRY_RUN)