@@ -34,13 +34,16 @@ ENVIRONMENT=
34
34
LANG =nl
35
35
NPM_ASSETS =public/css/app.css public/js/app.js
36
36
NPM_ENV =development
37
+ OS: =$(shell uname -s)
38
+ NPROCS: =$(shell [ Darwin = $(OS ) ] && sysctl -n hw.ncpu || nproc)
37
39
PHP =php -d memory_limit=256M $(PHP_EXTRA )
38
40
PHPUNIT =$(PHP ) vendor/bin/phpunit -d xdebug.max_nesting_level=250 -d memory_limit=1024M $(PHPUNIT_EXTRA )
39
41
PRETEND =--pretend
40
42
SCOUT_MODELS =
41
- SRCS = Makefile README.md webpack.mix.js composer.json package-lock.json package.json Envoy.blade.php \
42
- opcache_reset.php server.php phpunit.xml app bootstrap/app.php bootstrap/autoload.php config \
43
- database model resources routes tests
43
+ PHP_SRC =app bootstrap/app.php config database resources routes public/*.php tests
44
+ SRC = Makefile README.md webpack.mix.js composer.json package-lock.json package.json Envoy.blade.php \
45
+ opcache_reset.php server.php phpunit.xml app bootstrap/app.php bootstrap/autoload.php config \
46
+ database model resources routes tests
44
47
USER_AGENT: =$(shell $(CURL ) --version | head -1 | awk '{printf("% s/% s", $$1, $$2) ;}')
45
48
WGET =wget --no-check-certificate $(WGET_EXTRA )
46
49
WRITABLE_DIRS =storage/*/* bootstrap/cache
@@ -51,6 +54,9 @@ TEMP_DEPLOY_DIR := $(shell echo .deploy.tmp.$$$$)
51
54
52
55
all : rw
53
56
57
+ #
58
+ # Setup
59
+ #
54
60
rw :
55
61
sudo chmod -R g+w $(WRITABLE_DIRS )
56
62
sudo chown -R $(USER ) :$(WWW_GROUP_ID ) $(WRITABLE_DIRS )
@@ -84,6 +90,12 @@ init-elastic:
84
90
time $(ARTISAN) db:seed --class=DummyDataSeeder
85
91
[ -z $(SCOUT_MODELS) ] || for model in $(SCOUT_MODELS); do $(ARTISAN) scout:import "$$model"; done
86
92
93
+ get-envoy :
94
+ $(WGET ) -N https://raw.githubusercontent.com/papertank/envoy-deploy/master/Envoy.blade.php
95
+
96
+ #
97
+ # Deployment
98
+ #
87
99
deploy-checkout-copy-manual :
88
100
@[ ! -z ' $(BRANCH)' -a ! -z ' $(DST)' ] || (echo " missing BRANCH=... or DST=..." 1>&2 ; exit 1)
89
101
(rm -rf $( TEMP_DEPLOY_DIR) && git clone --recursive -j8 -b $( BRANCH) . $( TEMP_DEPLOY_DIR) && rsync -zaSHx $( TEMP_DEPLOY_DIR) / $( DST) /); rm -rf $(TEMP_DEPLOY_DIR )
@@ -129,6 +141,15 @@ ant build: .build.dummy.
129
141
.build.dummy. :
130
142
time $(ANT ) $(EXTRA ) $(ANT_TARGET )
131
143
144
+ #
145
+ # Docker
146
+ #
147
+ docker-image :
148
+ docker build --squash .
149
+
150
+ #
151
+ # Testing
152
+ #
132
153
test : rw clear-cache autodump
133
154
time $(PHPUNIT ) $(EXTRA )
134
155
@@ -167,6 +188,9 @@ test-elastic testelastic:
167
188
test-migrate :
168
189
time $(ARTISAN ) --env=testing migrate $(EXTRA )
169
190
191
+ #
192
+ # NPM
193
+ #
170
194
$(NPM_ASSETS ) : Makefile webpack.mix.js resources/assets/sass/* .scss resources/assets/js/* .js
171
195
time npm run $(NPM_ENV )
172
196
@@ -184,12 +208,10 @@ npm-watch:
184
208
npm-prod npm-production :
185
209
@make npm-dev NPM_ENV=production
186
210
187
- get-envoy :
188
- $(WGET ) -N https://raw.githubusercontent.com/papertank/envoy-deploy/master/Envoy.blade.php
189
-
190
- docker-image :
191
- docker build --squash .
192
211
212
+ #
213
+ # Lint
214
+ #
193
215
lint lint-parallel :
194
216
@make -j4 jsonlint xmllint phplint bladelint
195
217
@@ -213,6 +235,42 @@ xmllint xml-lint lint-xml lintxml:
213
235
@echo lint - XML...
214
236
@find * .xml app bootstrap public resources routes tests -name ' *.xml' | while read file; do nice -20 xmllint --noout " $$ file" ; done
215
237
238
+ #
239
+ # Static code analysis
240
+ #
241
+ loc :
242
+ @echo making fast copy...
243
+ @rm -rf build/src
244
+ @mkdir -p build/src
245
+ @for i in $(SRC ) ; do ln -s ../../" $$ i" build/src/; done
246
+ @echo running sloccount...
247
+ # sloccount --datadir .sloccount --follow build/src
248
+ @sloccount --addlang js --addlang makefile --addlang sql --addlangall --follow $(EXTRA ) -- build/src/ 2>&1 | fgrep -v ' Warning! Unclosed PHP file'
249
+ @echo running cloc...
250
+ @cloc --follow-links build/src
251
+
252
+ static-analysis static-analyzis static analysis analyzis analyse analyze stat anal : phpcpd phpcs phploc phpmd phpstan
253
+
254
+ phpcpd :
255
+ vendor/bin/phpcpd $(EXTRA ) $(PHP_SRC )
256
+
257
+ phpcs :
258
+ vendor/bin/phpcs --standard=PSR2 -p --parallel=$(NPROCS ) -s $(EXTRA ) $(PHP_SRC )
259
+
260
+ phploc :
261
+ vendor/bin/phploc $(EXTRA ) $(PHP_SRC )
262
+
263
+ phpmd :
264
+ for ruleset in cleancode codesize controversial design naming unusedcode; do \
265
+ vendor/bin/phpmd $(PHP_SRC ) ansi $$ ruleset $(EXTRA ) ; \
266
+ done
267
+
268
+ phpstan :
269
+ vendor/bin/phpstan analyse $(EXTRA ) $(PHP_SRC )
270
+
271
+ #
272
+ # Translations
273
+ #
216
274
find-texts :
217
275
@egrep -Er ' >[A-Z][a-z]|^\s*[A-Z][a-z][A-Za-z0-9 _.-]*\s*$$' resources/views/ $(CMD_EXTRA )
218
276
@@ -224,17 +282,9 @@ gentrans:
224
282
gentrans-en :
225
283
@make gentrans LANG=en
226
284
227
- loc :
228
- @echo making fast copy...
229
- @rm -rf build/src
230
- @mkdir -p build/src
231
- @for i in $(SRCS ) ; do ln -s ../../" $$ i" build/src/; done
232
- @echo running sloccount...
233
- # sloccount --datadir .sloccount --follow build/src
234
- @sloccount --addlang js --addlang makefile --addlang sql --addlangall --follow $(EXTRA ) -- build/src/ 2>&1 | fgrep -v ' Warning! Unclosed PHP file'
235
- @echo running cloc...
236
- @cloc --follow-links build/src
237
-
285
+ #
286
+ # Shortcuts
287
+ #
238
288
clean : clear
239
289
rm -f Envoy[0-9a-f]* .php
240
290
0 commit comments