flush
[m6w6/btr] / lib / btr / build / composer.mk
1 BUILD_CLEAN=false
2 BUILD_ARGS= install --dev
3 TEST_ARGS= --strict --coverage-text
4
5 .PHONY: all clean
6 .SUFFIXES:
7
8 all: clean $(REPORT)
9 $(SAY) "Result: $$(cat $(REPORT))"
10
11 clean: $(CONFIG_REPORT)
12 if $(BUILD_CLEAN); \
13 then \
14 cd $(BUILD_DIR) && \
15 rm -rf vendor; \
16 fi;
17
18 $(REPORT): $(TEST_REPORT)
19 @( \
20 TESTS_PASSED=$$(grep -Pc '^ok \d+' < $(TEST_REPORT)); \
21 TESTS_FAILED=$$(grep -Pc '^not ok \d+' < $(TEST_REPORT)); \
22 \
23 printf "%d/%d" $$TESTS_PASSED $$TESTS_FAILED >$@; \
24 if test -s "$(LAST_REPORT)"; then \
25 LAST_PASSED=$$(grep -Pc '^ok \d+' < $(LAST_REPORT)); \
26 LAST_FAILED=$$(grep -Pc '^not ok \d+' < $(LAST_REPORT)); \
27 DIFF_PASSED=$$(bc <<<"$$TESTS_PASSED - $$LAST_PASSED"); \
28 DIFF_FAILED=$$(bc <<<"$$TESTS_FAILED - $$LAST_FAILED"); \
29 printf " %+d/%+d" $$DIFF_PASSED $$DIFF_FAILED >>$@; \
30 fi; \
31 printf "\n" >>$@; \
32 )
33
34 $(TEST_REPORT): $(BUILD_REPORT)
35 $(SAY) "Running unit tests..."
36 cd $(BUILD_DIR) && \
37 phpunit --tap $(TEST_ARGS) . >../$@
38
39 $(BUILD_REPORT): $(CONFIG_REPORT) $(BUILD_DIR)/composer.lock
40 $(SAY) "Installing dependencies..."
41 cd $(BUILD_DIR) && \
42 ./composer.phar -n --no-ansi $(QUIET_FLAG) $(VERBOSE_FLAG) $(BUILD_ARGS) \
43 >../$@
44
45 $(CONFIG_REPORT): $(BUILD_DIR)/composer.json $(BUILD_DIR)/composer.phar
46 touch $(CONFIG_REPORT)
47
48 $(BUILD_DIR)/composer.phar:
49 $(SAY) "Orchestrating composer..."
50 @cd $(BUILD_DIR) && ( \
51 COMPOSER=$$(command -v composer); \
52 if test $$? -eq 0; \
53 then \
54 ln -s $$COMPOSER composer.phar; \
55 else \
56 curl $(SILENT_FLAG) -S http://getcomposer.org/installer | php; \
57 fi; \
58 ) >>$(CONFIG_REPORT)
59
60 $(BUILD_DIR)/composer.json: $(BRANCH_DIR)/composer.json
61 rsync $(QUIET_FLAG) $(VERBOSE_FLAG) -a --delete $(BRANCH_DIR)/ $(BUILD_DIR)/ \
62 >> $(CONFIG_REPORT)
63
64 $(BUILD_DIR)/composer.lock: $(BUILD_DIR)/composer.json $(BUILD_DIR)/composer.phar
65
66 # vim: noet