-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile.vagrant
More file actions
90 lines (66 loc) · 3.27 KB
/
Makefile.vagrant
File metadata and controls
90 lines (66 loc) · 3.27 KB
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
#!/usr/bin/env make
override blackbox/:=*
ifeq ($(origin .FEATURES),undefined)
$(error `make` executable version "$(MAKE_VERSION)" is not supported. GNU Make 3.82 or above is required)
endif
override SHELL:=/bin/bash
ifneq ($(value SHELL),$(shell echo $$BASH))
$(error current shell executable is not supported. GNU Bash 4.3 or above is required)
endif
ifeq ($(words $(MAKEFILE_LIST)),1)
$(error `Makefile.vagrant` should be included, direct usage is not allowed)
endif
BLACKBOX_FLAG__DEBUG_MODE:=no
BLACKBOX_FLAG__STEP_PROVISION:=yes
BLACKBOX_FLAG__STEP_BUILD:=yes
BLACKBOX_FLAG__STEP_EVALUATE:=yes
ifneq ($(BLACKBOX_DIR),$(abspath $(dir $(lastword $(MAKEFILE_LIST)))))
$(error `BLACKBOX_DIR` configuration is not valid)
endif
BLACKBOX_HOST:=blackbox-$(shell basename $(PWD) | cut -c 1-36)
BLACKBOX_HOST_USER_QUESTION_DIR=$(call blackbox/pwd)
BLACKBOX_USER_NAME:=ubuntu
BLACKBOX_USER_QUESTION_DIR=$(BLACKBOX_USER_HOME)/$(shell basename $(call blackbox/pwd))
VAGRANT_VAGRANTFILE=$(BLACKBOX_DIR)/Vagrantfile
define blackbox/pwd=
$(abspath $(dir $(firstword $(MAKEFILE_LIST)))/$(1))
endef
export BLACKBOX_HOST
export BLACKBOX_HOST_USER_QUESTION_DIR
export BLACKBOX_USER_QUESTION_DIR
export VAGRANT_VAGRANTFILE
debug: ;@:
$(eval BLACKBOX_FLAG__DEBUG_MODE:=yes)
$(foreach variable,BLACKBOX_FLAG__DEBUG_MODE BLACKBOX_FLAG__STEP_PROVISION BLACKBOX_FLAG__STEP_BUILD BLACKBOX_FLAG__STEP_EVALUATE,$(info $(shell printf "\033[0;37m%s = %s\033[0m" "$(variable)" "$($(variable))")))
$(info $(shell printf "\033[0;37m%s\033[0m" \\))
$(foreach variable,$(filter-out BLACKBOX_FLAG__%,$(filter BLACKBOX_%,$(sort $(.VARIABLES)))),$(info $(shell printf "\033[0;37m%s = %s\033[0m" "$(variable)" "$($(variable))")))
$(if $(and $(filter-out $(words $(MAKECMDGOALS)),0),$(filter-out $(words $(MAKECMDGOALS)),1)),$(info $(shell printf "\033[0;37m%s\033[0m" --)))
all: uninstall install setup solve check
install:
vagrant up
setup:
vagrant ssh --command="sudo BLACKBOX_FLAG__DEBUG_MODE=$(BLACKBOX_FLAG__DEBUG_MODE) BLACKBOX_FLAG__STEP_PROVISION=$(BLACKBOX_FLAG__STEP_PROVISION) BLACKBOX_USER_QUESTION_DIR=$(BLACKBOX_USER_QUESTION_DIR) BLACKBOX_VERSION=$(BLACKBOX_VERSION) bash $(BLACKBOX_USER_QUESTION_DIR)/setup.sh"
solve:
vagrant ssh --command="sudo -u $(BLACKBOX_USER_NAME) -H bash $(BLACKBOX_USER_QUESTION_DIR)/solve.sh"
check:
vagrant ssh --command="sudo BLACKBOX_FLAG__DEBUG_MODE=$(BLACKBOX_FLAG__DEBUG_MODE) BLACKBOX_FLAG__STEP_PROVISION=$(BLACKBOX_FLAG__STEP_PROVISION) BLACKBOX_FLAG__STEP_BUILD=$(BLACKBOX_FLAG__STEP_BUILD) BLACKBOX_FLAG__STEP_EVALUATE=$(BLACKBOX_FLAG__STEP_EVALUATE) BLACKBOX_USER_QUESTION_DIR=$(BLACKBOX_USER_QUESTION_DIR) BLACKBOX_VERSION=$(BLACKBOX_VERSION) bash $(BLACKBOX_USER_QUESTION_DIR)/check.sh"
check\:evaluate:
$(MAKE) BLACKBOX_FLAG__STEP_PROVISION=no BLACKBOX_FLAG__STEP_BUILD=no BLACKBOX_FLAG__STEP_EVALUATE=yes check
shell:
vagrant ssh --command="sudo su - $(BLACKBOX_USER_NAME)"
save:
vagrant snapshot save current
restore:
vagrant snapshot restore current
delete:
vagrant snapshot delete current
hr:
cat <(xargs -r xdg-open 2>/dev/null < <(grep -o 'https://www.hackerrank.com.*' README.md))
gh:
cat <(xargs -r xdg-open 2>/dev/null < <(grep -o 'https://github.com.*' README.md))
uninstall:
vagrant destroy -f
rm -rf .vagrant
ifeq ($(filter debug,$(MAKECMDGOALS)),)
.SILENT:
endif