]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - Makefile
Bump Shaarli version to v0.8.7
[github/shaarli/Shaarli.git] / Makefile
index c560d8d16d60f7e023d06c4ec66eaa483b0631f9..47f3530f2048976f1c7701a553c33095e6c13e2a 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:
 # - install Xdebug for PHPUnit code coverage reports:
 #   - see http://xdebug.org/docs/install
 #   - enable in php.ini
+SHELL := /bin/bash
 
 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 +99,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,8 +125,42 @@ test:
        @echo "-------"
        @echo "PHPUNIT"
        @echo "-------"
+       @mkdir -p sandbox
        @$(BIN)/phpunit tests
 
+##
+# 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 +168,7 @@ test:
 ### remove all unversioned files
 clean:
        @git clean -df
+       @rm -rf sandbox
 
 ### generate Doxygen documentation
 doxygen: clean
@@ -154,14 +204,18 @@ htmlsidebar:
 htmlpages:
        @for file in `find doc/ -maxdepth 1 -name "*.md"`; do \
                base=`basename $$file .md`; \
-               sed -i "1i #$${base//-/ }" $$file; \
+               sed -i "1i # $${base//-/ }" $$file; \
                awk 'BEGIN { FS = "[\\[\\]]{2}" }'\
        'm = /\[/ { t=$$2; gsub(/ /, "-", $$2); print $$1"["t"]("$$2".html)"$$3 }'\
        '!m { print $$0 }' $$file > doc/tmp.md; \
                mv doc/tmp.md $$file; \
-               pandoc -f markdown_github -t html5 -s \
+               pandoc  -f gfm \
+                       -t html5 \
+                       -s \
                        -c "github-markdown.css" \
-                       -T Shaarli -M pagetitle:"$${base//-/ }" -B doc/sidebar.html \
+                       -T Shaarli \
+                       -M pagetitle:"$${base//-/ }" \
+                       -B doc/sidebar.html \
                        -o doc/$$base.html $$file; \
        done;