-
Carsten Rose authoredCarsten Rose authored
Makefile 4.76 KiB
PKG_VERSION = $(shell awk '/version/ { print $$3 }' extension/ext_emconf.php | sed "s/'//g")
NIGHTLY_DATE = $(shell date '+%Y%m%d')
RELEASE_DATE = $(shell date '+%Y%m%d%H%M')
GIT_REVISION_SHORT = $(shell git rev-parse --short HEAD || true)
GIT_REVISION_LONG = $(shell git rev-parse HEAD || true)
EXTENSION_CONTENT = Classes Configuration Documentation Source Resources ext_emconf.php ext_localconf.php ext_tables.php ext_icon.png ext_conf_template.txt config.qfq.example.php RELEASE.txt vendor
DISTDIR=dist
# Use by jenkins to separate temp directories used by pip in order to allow concurrent builds
PIP_TMP ?= /tmp
all: archive t3sphinx
maintainer-clean:
rm -f .doc_plantuml .npmpackages .phpdocinstall .plantuml_install .support .support_plantuml
rm -rf doc/jsdoc doc/phpdoc doc/plantuml support node_modules .python_virtualenv build-dist
archive: clean qfq.zip
qfq.zip:
cd extension/vendor; rm -rf phpoffice/phpspreadsheet/{C*,bin,c*,d*,m*,p*,sa*,.g*,.p*,.s*,.t*} doctrine myclabs phar-io phpdocumentor phpspec phpunit sebastian theseer webmozart
cd extension; zip -r ../$@ $(EXTENSION_CONTENT)
clean:
cd doc/diagram ; $(MAKE) $@
update-qfq-doc:
rsync -av --delete --exclude=_make --exclude=_static extension/Documentation/ ../qfq-doc/Documentation/; \
cd ../qfq-doc/; \
git commit -a; \
git push
wget -O /dev/null https://docs.typo3.org/~mbless/github.com/T3DocumentationStarter/Public-Info-053.git.make/request_rebuild.php
git-revision: make-dist-dir
echo $(GIT_REVISION_LONG) > $(DISTDIR)/revision.git
make-dist-dir:
rm -rf $(DISTDIR)/
mkdir $(DISTDIR)
dist-move-doc:
cd $(DISTDIR) ; \
mkdir Documentation.tmp ;\
mv Documentation/_make/build/html Documentation.tmp ;\
rm -rf Documentation ; \
mv Documentation.tmp Documentation
dist-copy-extension:
cd extension ; cp -R $(EXTENSION_CONTENT) ../$(DISTDIR)/
build-dist: t3sphinx make-dist-dir dist-copy-extension dist-move-doc git-revision
echo "Distribution made in $(DIST)"
nightly: basic build-dist
cd $(DISTDIR); zip -r ../qfq_$(VERSION)_$(RELEASE_DATE).zip $(EXTENSION_CONTENT) revision.git -x config.ini
snapshot: basic build-dist
cd $(DISTDIR) ; zip -r ../qfq_$(VERSION)_$(RELEASE_DATE).zip $(EXTENSION_CONTENT) revision.git -x config.ini
release: basic build-dist
if [ -z "$(VERSION)" ] ; then echo "Set VERSION make variable to the release version (fmt: maj.min.micro)" ; exit 1 ; fi
cd $(DISTDIR) ; zip -r "../qfq_$(VERSION)_$(RELEASE_DATE).zip" $(EXTENSION_CONTENT) revision.git -x config.ini
t3sphinx: .virtual_env
. .python_virtualenv/bin/activate ; cd extension/Documentation/_make; make html
plantuml:
cd doc/diagram ; $(MAKE)
bootstrap: .npmpackages .plantuml_install .virtual_env
npm update
grunt default
# take care that phpOffice is located under 'qfq/Resources/Private/vendor/phpoffice'
# cd extension/Resources/Private; composer update
cd extension; composer update
basic: .npmpackages .virtual_env
npm update
grunt default
# IMPORTANT: install composer with no-dev flag for deployment!
cd extension; composer install --no-dev --optimize-autoloader; cd vendor/phpoffice/phpspreadsheet; rm -rf .github bin docs samples .g* .s* .t* C* c* m* p*
.plantuml_install: .support_plantuml
wget --no-check-certificate -O support/plantuml/plantuml.jar 'https://downloads.sourceforge.net/project/plantuml/plantuml.jar'
touch $@
.npmpackages: package.json
npm ls -g grunt-cli 2>/dev/null || { echo "Please install grunt-cli npm package using 'npm install -g grunt-cli'" 1>&2 ; exit 1; }
npm install
touch $@
.support:
mkdir -p support
touch $@
.support_plantuml: .support
mkdir -p support/plantuml
touch $@
.virtual_env: pip-temp-directory
virtualenv .python_virtualenv
. .python_virtualenv/bin/activate ; TMPDIR="$(PIP_TMP)" pip install --upgrade sphinx==1.5.5
touch $@
pip-temp-directory:
test -d "$(PIP_TMP)" || mkdir -p "$(PIP_TMP)"
.PHONY: nightly maintainer-clean snapshot release git-revision t3sphinx build-dist make-dist-dir dist-move-doc dist-copy-extension pip-temp-directory plantuml sonar
copyReleaseNotes:
cp extension/Documentation/Release.rst extension/RELEASE.txt
cp extension/Documentation/Release.rst CHANGELOG.md
phpunit:
# update composer with dev to install phpunit package
cd extension; composer update
# create test config files and get test database password from environment variable
cp -v extension/Tests/phpunit_config.qfq.php extension/config.qfq.php; sed -i "s/#PHPUNIT_PASSWORD#/$(PHPUNIT_MYSQL_PASSWORD)/" extension/config.qfq.php
cp -v extension/Tests/phpunit_LocalConfiguration.php extension/LocalConfiguration.php
# mock typo3 directory structure
mkdir -p typo3conf/ext/qfq
mv -v extension/* typo3conf/ext/qfq/
# run phpunit
cd typo3conf/ext/qfq/; pwd; vendor/bin/phpunit --configuration phpunit.xml
phpunit_snapshot: snapshot phpunit
phpunit_release: release phpunit