X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=Makefile;h=22be0d96c36875614958ccd481f1f00bc20bd8fa;hb=bb70e690598d270951148e003a4dc253b05868b4;hp=d69fac46b2a6fccd1a85c3b4d55e1f45c9ff88a6;hpb=96db105e4c0833324f7168edb5673278de8ccd54;p=github%2Fshaarli%2FShaarli.git diff --git a/Makefile b/Makefile index d69fac46..22be0d96 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: @@ -13,10 +13,10 @@ # - enable in php.ini BIN = vendor/bin -PHP_SOURCE = index.php application tests -PHP_COMMA_SOURCE = index.php,application,tests +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,8 +124,37 @@ 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 + +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 -o $(ARCHIVE_VERSION).tar HEAD + tar rvf $(ARCHIVE_VERSION).tar vendor/ + +### generate a release zip and include 3rd-party dependencies +release_zip: composer_dependencies + git archive -o $(ARCHIVE_VERSION).zip -9 HEAD + zip -r $(ARCHIVE_VERSION).zip vendor/ + ## # Targets for repository and documentation maintenance ## @@ -119,6 +162,12 @@ test: ### remove all unversioned files clean: @git clean -df + @rm -rf sandbox + +### generate Doxygen documentation +doxygen: clean + @rm -rf doxygen + @( cat Doxyfile ; echo "PROJECT_NUMBER=`git describe`" ) | doxygen - ### update the local copy of the documentation doc: clean @@ -126,8 +175,38 @@ doc: clean @git clone https://github.com/shaarli/Shaarli.wiki.git doc @rm -rf doc/.git +### Generate a custom sidebar +# +# Sidebar content: +# - convert GitHub-flavoured relative links to standard Markdown +# - trim HTML, only keep the list () part +htmlsidebar: + @echo '
' > doc/sidebar.html + @awk 'BEGIN { FS = "[\\[\\]]{2}" }'\ + 'm = /\[/ { t=$$2; gsub(/ /, "-", $$2); print $$1"["t"]("$$2".html)"$$3 }'\ + '!m { print $$0 }' doc/_Sidebar.md > doc/tmp.md + @pandoc -f markdown -t html5 -s doc/tmp.md | awk '/(ul>|li>)/' >> doc/sidebar.html + @echo '
' >> doc/sidebar.html + @rm doc/tmp.md + ### Convert local markdown documentation to HTML -htmldoc: - for file in `find doc/ -maxdepth 1 -name "*.md"`; do \ - pandoc -f markdown_github -t html5 -s -c "github-markdown.css" -o doc/`basename $$file .md`.html "$$file"; \ +# +# For all pages: +# - infer title from the file name +# - convert GitHub-flavoured relative links to standard Markdown +# - insert the sidebar menu +htmlpages: + @for file in `find doc/ -maxdepth 1 -name "*.md"`; do \ + base=`basename $$file .md`; \ + 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 \ + -c "github-markdown.css" \ + -T Shaarli -M pagetitle:"$${base//-/ }" -B doc/sidebar.html \ + -o doc/$$base.html $$file; \ done; + +htmldoc: doc htmlsidebar htmlpages