]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - Makefile
Merge pull request #1698 from ArthurHoaro/feature/plugins-search-filter
[github/shaarli/Shaarli.git] / Makefile
index 4adbdd680a076171275de07d9f6bdafa22216e18..181b61c4c476c1f3f16b5bfeb39789b9ea090bcd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,10 +2,8 @@
 # Makefile for PHP code analysis & testing, documentation and release generation
 
 BIN = vendor/bin
-PHP_SOURCE = index.php application tests plugins
-PHP_COMMA_SOURCE = index.php,application,tests,plugins
 
-all: static_analysis_summary check_permissions test
+all: check_permissions test
 
 ##
 # Docker test adapter
@@ -17,14 +15,6 @@ docker_%:
        rsync -az /shaarli/ ~/shaarli/
        cd ~/shaarli && make $*
 
-##
-# Concise status of the project
-# These targets are non-blocking: || exit 0
-##
-
-static_analysis_summary: code_sniffer_source copy_paste mess_detector_summary
-       @echo
-
 ##
 # PHP_CodeSniffer
 # Detects PHP syntax errors
@@ -32,70 +22,22 @@ static_analysis_summary: code_sniffer_source copy_paste mess_detector_summary
 # - http://pear.php.net/manual/en/package.php.php-codesniffer.usage.php
 # - http://pear.php.net/manual/en/package.php.php-codesniffer.reporting.php
 ##
+PHPCS := $(BIN)/phpcs
 
-code_sniffer: code_sniffer_full
-
-### - errors filtered by coding standard: PEAR, PSR1, PSR2, Zend...
-PHPCS_%:
-       @$(BIN)/phpcs $(PHP_SOURCE) --report-full --report-width=200 --standard=$*
+code_sniffer:
+       @$(PHPCS)
 
 ### - errors by Git author
 code_sniffer_blame:
-       @$(BIN)/phpcs $(PHP_SOURCE) --report-gitblame
+       @$(PHPCS) --report-gitblame
 
 ### - all errors/warnings
 code_sniffer_full:
-       @$(BIN)/phpcs $(PHP_SOURCE) --report-full --report-width=200
+       @$(PHPCS) --report-full --report-width=200
 
 ### - errors grouped by kind
 code_sniffer_source:
-       @$(BIN)/phpcs $(PHP_SOURCE) --report-source || exit 0
-
-##
-# PHP Copy/Paste Detector
-# Detects code redundancy
-# Documentation: https://github.com/sebastianbergmann/phpcpd
-##
-
-copy_paste:
-       @echo "-----------------------"
-       @echo "PHP COPY/PASTE DETECTOR"
-       @echo "-----------------------"
-       @$(BIN)/phpcpd $(PHP_SOURCE) || exit 0
-       @echo
-
-##
-# PHP Mess Detector
-# Detects PHP syntax errors, sorted by category
-# Rules documentation: http://phpmd.org/rules/index.html
-##
-MESS_DETECTOR_RULES = cleancode,codesize,controversial,design,naming,unusedcode
-
-mess_title:
-       @echo "-----------------"
-       @echo "PHP MESS DETECTOR"
-       @echo "-----------------"
-
-###  - all warnings
-mess_detector: mess_title
-       @$(BIN)/phpmd $(PHP_COMMA_SOURCE) text $(MESS_DETECTOR_RULES) | sed 's_.*\/__'
-
-### - all warnings + HTML output contains links to PHPMD's documentation
-mess_detector_html:
-       @$(BIN)/phpmd $(PHP_COMMA_SOURCE) html $(MESS_DETECTOR_RULES) \
-       --reportfile phpmd.html || exit 0
-
-### - warnings grouped by message, sorted by descending frequency order
-mess_detector_grouped: mess_title
-       @$(BIN)/phpmd $(PHP_SOURCE) text $(MESS_DETECTOR_RULES) \
-       | cut -f 2 | sort | uniq -c | sort -nr
-
-### - summary: number of warnings by rule set
-mess_detector_summary: mess_title
-       @for rule in $$(echo $(MESS_DETECTOR_RULES) | tr ',' ' '); do \
-               warnings=$$($(BIN)/phpmd $(PHP_COMMA_SOURCE) text $$rule | wc -l); \
-               printf "$$warnings\t$$rule\n"; \
-       done;
+       @$(PHPCS) --report-source || exit 0
 
 ##
 # Checks source file & script permissions
@@ -134,10 +76,15 @@ locale_test_%:
                --testsuite language-$(firstword $(subst _, ,$*))
 
 all_tests: test locale_test_de_DE locale_test_en_US locale_test_fr_FR
-       @$(BIN)/phpcov merge --html coverage coverage
+       @# --The current version is not compatible with PHP 7.2
+       @#$(BIN)/phpcov merge --html coverage coverage
        @# --text doesn't work with phpunit 4.* (v5 requires PHP 5.6)
        @#$(BIN)/phpcov merge --text coverage/txt coverage
 
+### download 3rd-party PHP libraries, including dev dependencies
+composer_dependencies_dev: clean
+       composer install --prefer-dist
+
 ##
 # Custom release archive generation
 #
@@ -170,16 +117,20 @@ release_tar: composer_dependencies htmldoc translate build_frontend
        git archive --prefix=$(ARCHIVE_PREFIX) -o $(ARCHIVE_VERSION).tar HEAD
        tar rvf $(ARCHIVE_VERSION).tar --transform "s|^vendor|$(ARCHIVE_PREFIX)vendor|" vendor/
        tar rvf $(ARCHIVE_VERSION).tar --transform "s|^doc/html|$(ARCHIVE_PREFIX)doc/html|" doc/html/
+       tar rvf $(ARCHIVE_VERSION).tar --transform "s|^tpl|$(ARCHIVE_PREFIX)tpl|" tpl/
        gzip $(ARCHIVE_VERSION).tar
 
 ### generate a release zip and include 3rd-party dependencies and translations
 release_zip: composer_dependencies htmldoc translate build_frontend
        git archive --prefix=$(ARCHIVE_PREFIX) -o $(ARCHIVE_VERSION).zip -9 HEAD
-       mkdir -p $(ARCHIVE_PREFIX)/{doc,vendor}
+       mkdir -p $(ARCHIVE_PREFIX)/doc
+       mkdir -p $(ARCHIVE_PREFIX)/vendor
        rsync -a doc/html/ $(ARCHIVE_PREFIX)doc/html/
        zip -r $(ARCHIVE_VERSION).zip $(ARCHIVE_PREFIX)doc/
        rsync -a vendor/ $(ARCHIVE_PREFIX)vendor/
        zip -r $(ARCHIVE_VERSION).zip $(ARCHIVE_PREFIX)vendor/
+       rsync -a tpl/ $(ARCHIVE_PREFIX)tpl/
+       zip -r $(ARCHIVE_VERSION).zip $(ARCHIVE_PREFIX)tpl/
        rm -rf $(ARCHIVE_PREFIX)
 
 ##
@@ -197,17 +148,17 @@ authors:
        @git shortlog -sne > AUTHORS
        @rm .mailmap
 
-### generate Doxygen documentation
-doxygen: clean
-       @rm -rf doxygen
-       @doxygen Doxyfile
+### generate phpDocumentor documentation
+phpdoc: clean
+       @docker run --rm -v $(PWD):/data -u `id -u`:`id -g` phpdoc/phpdoc
 
 ### generate HTML documentation from Markdown pages with MkDocs
 htmldoc:
        python3 -m venv venv/
        bash -c 'source venv/bin/activate; \
+       pip install wheel; \
        pip install mkdocs; \
-       mkdocs build'
+       mkdocs build --clean'
        find doc/html/ -type f -exec chmod a-x '{}' \;
        rm -r venv
 
@@ -220,7 +171,8 @@ translate:
 eslint:
        @yarn run eslint -c .dev/.eslintrc.js assets/vintage/js/
        @yarn run eslint -c .dev/.eslintrc.js assets/default/js/
+       @yarn run eslint -c .dev/.eslintrc.js assets/common/js/
 
 ### Run CSSLint check against Shaarli's SCSS files
 sasslint:
-       @yarn run sass-lint -c .dev/.sasslintrc 'assets/default/scss/*.scss' -v -q
+       @yarn run stylelint --config .dev/.stylelintrc.js 'assets/default/scss/*.scss'