]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - Makefile
Fixes a bug preventing to edit link with ID 0
[github/shaarli/Shaarli.git] / Makefile
index 75c54f2875d012539e1ff3be563cabacdbf77041..1d8a73a2e6f8b27a05e36d29225db1db567c1e22 100644 (file)
--- 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:
@@ -124,8 +124,53 @@ test:
        @echo "-------"
        @echo "PHPUNIT"
        @echo "-------"
-       @mkdir -p sandbox
-       @$(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
@@ -136,6 +181,12 @@ 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
        @rm -rf doxygen
@@ -181,4 +232,4 @@ htmlpages:
                        -o doc/$$base.html $$file; \
        done;
 
-htmldoc: doc htmlsidebar htmlpages
+htmldoc: authors doc htmlsidebar htmlpages