X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=Makefile;h=1d8a73a2e6f8b27a05e36d29225db1db567c1e22;hb=6c7d68645409cfad3858b5f252f5a49b148e3b53;hp=c560d8d16d60f7e023d06c4ec66eaa483b0631f9;hpb=05af6f53256056eacb3813aff8aa606e83365f61;p=github%2Fshaarli%2FShaarli.git diff --git a/Makefile b/Makefile index c560d8d1..1d8a73a2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -# Shaarli, the personal, minimalist, super-fast, no-database delicious clone. -# Makefile for PHP code analysis & testing +# The personal, minimalist, super-fast, database free, bookmarking service. +# Makefile for PHP code analysis & testing, documentation and release generation # Prerequisites: # - install Composer, either: @@ -16,7 +16,7 @@ BIN = vendor/bin PHP_SOURCE = index.php application tests plugins PHP_COMMA_SOURCE = index.php,application,tests,plugins -all: static_analysis_summary test +all: static_analysis_summary check_permissions test ## # Concise status of the project @@ -98,6 +98,20 @@ mess_detector_summary: mess_title printf "$$warnings\t$$rule\n"; \ done; +## +# Checks source file & script permissions +## +check_permissions: + @echo "----------------------" + @echo "Check file permissions" + @echo "----------------------" + @for file in `git ls-files`; do \ + if [ -x $$file ]; then \ + errors=true; \ + echo "$${file} is executable"; \ + fi \ + done; [ -z $$errors ] || false + ## # PHPUnit # Runs unitary and functional tests @@ -110,7 +124,53 @@ test: @echo "-------" @echo "PHPUNIT" @echo "-------" - @$(BIN)/phpunit tests + @mkdir -p sandbox coverage + @$(BIN)/phpunit --coverage-php coverage/main.cov --testsuite unit-tests + +locale_test_%: + @UT_LOCALE=$*.utf8 \ + $(BIN)/phpunit \ + --coverage-php coverage/$(firstword $(subst _, ,$*)).cov \ + --bootstrap tests/languages/bootstrap.php \ + --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 + @# --text doesn't work with phpunit 4.* (v5 requires PHP 5.6) + @#$(BIN)/phpcov merge --text coverage/txt coverage + +## +# Custom release archive generation +# +# For each tagged revision, GitHub provides tar and zip archives that correspond +# to the output of git-archive +# +# These targets produce similar archives, featuring 3rd-party dependencies +# to ease deployment on shared hosting. +## +ARCHIVE_VERSION := shaarli-$$(git describe)-full +ARCHIVE_PREFIX=Shaarli/ + +release_archive: release_tar release_zip + +### download 3rd-party PHP libraries +composer_dependencies: clean + composer update --no-dev + find vendor/ -name ".git" -type d -exec rm -rf {} + + +### generate a release tarball and include 3rd-party dependencies +release_tar: composer_dependencies + git archive --prefix=$(ARCHIVE_PREFIX) -o $(ARCHIVE_VERSION).tar HEAD + tar rvf $(ARCHIVE_VERSION).tar --transform "s|^vendor|$(ARCHIVE_PREFIX)vendor|" vendor/ + gzip $(ARCHIVE_VERSION).tar + +### generate a release zip and include 3rd-party dependencies +release_zip: composer_dependencies + git archive --prefix=$(ARCHIVE_PREFIX) -o $(ARCHIVE_VERSION).zip -9 HEAD + mkdir $(ARCHIVE_PREFIX) + rsync -a vendor/ $(ARCHIVE_PREFIX)vendor/ + zip -r $(ARCHIVE_VERSION).zip $(ARCHIVE_PREFIX)vendor/ + rm -rf $(ARCHIVE_PREFIX) ## # Targets for repository and documentation maintenance @@ -119,6 +179,13 @@ test: ### remove all unversioned files clean: @git clean -df + @rm -rf sandbox + +### generate the AUTHORS file from Git commit information +authors: + @cp .github/mailmap .mailmap + @git shortlog -sne > AUTHORS + @rm .mailmap ### generate Doxygen documentation doxygen: clean @@ -165,4 +232,4 @@ htmlpages: -o doc/$$base.html $$file; \ done; -htmldoc: doc htmlsidebar htmlpages +htmldoc: authors doc htmlsidebar htmlpages