-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
144 lines (127 loc) · 4.51 KB
/
Copy pathMakefile
File metadata and controls
144 lines (127 loc) · 4.51 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
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
app_name=$(notdir $(CURDIR))
build_tools_directory=$(CURDIR)/build/tools
source_build_directory=$(CURDIR)/build/artifacts/source
source_package_name=$(source_build_directory)/$(app_name)
appstore_build_directory=$(CURDIR)/build/artifacts/appstore
appstore_package_name=$(appstore_build_directory)/$(app_name)
npm=$(shell which npm 2> /dev/null)
composer=$(shell which composer 2> /dev/null)
all: build
# Fetches the PHP and JS dependencies and compiles the JS. If no composer.json
# is present, the composer step is skipped, if no package.json or js/package.json
# is present, the npm step is skipped
.PHONY: build
build:
ifneq (,$(wildcard $(CURDIR)/composer.json))
make composer
endif
ifneq (,$(wildcard $(CURDIR)/package.json))
make npm
endif
ifneq (,$(wildcard $(CURDIR)/js/package.json))
make npm
endif
# Installs composer dependencies for building the app and
# wipes out unused composer files.
.PHONY: composer
composer:
composer install --no-dev --prefer-dist
# Installs npm dependencies
.PHONY: npm
npm:
ifeq (,$(wildcard $(CURDIR)/package.json))
cd js && $(npm) ci && $(npm) run build
else
npm ci && npm run build
endif
# Removes the appstore build
.PHONY: clean
clean:
rm -rf ./build
# Same as clean but also removes dependencies installed by composer, bower and
# npm
.PHONY: distclean
distclean: clean
rm -rf vendor
rm -rf node_modules
rm -rf js/vendor
rm -rf js/node_modules
# Builds the source and appstore package
.PHONY: dist
dist:
make source
make appstore
# Builds the source package
.PHONY: source
source:
rm -rf $(source_build_directory)
mkdir -p $(source_build_directory)
tar cvzf $(source_package_name).tar.gz ../$(app_name) \
--exclude-vcs \
--exclude="../$(app_name)/build" \
--exclude="../$(app_name)/js/node_modules" \
--exclude="../$(app_name)/node_modules" \
--exclude="../$(app_name)/*.log" \
--exclude="../$(app_name)/js/*.log" \
# Builds the source package for the app store, ignores php and js tests
.PHONY: appstore
appstore:
make distclean
make build
rm -rf $(appstore_build_directory)
mkdir -p $(appstore_build_directory)
tar cvzf $(appstore_package_name).tar.gz \
--exclude-vcs \
--exclude="../$(app_name)/build" \
--exclude="../$(app_name)/tests" \
--exclude="../$(app_name)/Makefile" \
--exclude="../$(app_name)/*.log" \
--exclude="../$(app_name)/phpunit*xml" \
--exclude="../$(app_name)/composer.*" \
--exclude="../$(app_name)/js/node_modules" \
--exclude="../$(app_name)/js/tests" \
--exclude="../$(app_name)/js/test" \
--exclude="../$(app_name)/js/*.log" \
--exclude="../$(app_name)/js/package.json" \
--exclude="../$(app_name)/js/bower.json" \
--exclude="../$(app_name)/js/karma.*" \
--exclude="../$(app_name)/js/protractor.*" \
--exclude="../$(app_name)/package.json" \
--exclude="../$(app_name)/package-lock.json" \
--exclude="../$(app_name)/bower.json" \
--exclude="../$(app_name)/karma.*" \
--exclude="../$(app_name)/protractor\.*" \
--exclude="../$(app_name)/.*" \
--exclude="../$(app_name)/js/.*" \
--exclude="../$(app_name)/src" \
--exclude="../$(app_name)/node_modules" \
--exclude="../$(app_name)/scripts" \
--exclude="../$(app_name)/translationfiles" \
../$(app_name) \
.PHONY: test
test:
$(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
$(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml
.PHONY: unittest
unittest:
$(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
.PHONY: integrationtest
integrationtest:
$(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml
.PHONY: coverage
coverage:
XDEBUG_MODE=coverage $(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml --coverage-php coverage_unittests.cov
XDEBUG_MODE=coverage $(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml --coverage-php coverage_integrationtests.cov
XDEBUG_MODE=coverage $(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpcov/phpcov merge --clover coverage.xml .
.PHONY: html-coverage
html-coverage:
XDEBUG_MODE=coverage $(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml --coverage-php coverage_unittests.cov
XDEBUG_MODE=coverage $(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml --coverage-php coverage_integrationtests.cov
XDEBUG_MODE=coverage $(CURDIR)/vendor-bin/phpunit/vendor/phpunit/phpcov/phpcov merge --html coverage_html .
.PHONY: lint
lint: composer
composer run lint
composer run cs:check
.PHONY: lint-fix
lint-fix: composer
composer run cs:fix