SHELL := /usr/bin/env bash COMPOSER_BIN := $(shell command -v composer 2> /dev/null) ifndef COMPOSER_BIN $(error composer is not available on your system, please install composer) endif # directories app_name=$(notdir $(CURDIR)) build_dir=$(CURDIR)/build dist_dir=$(build_dir)/dist doc_files=README.md LICENSE src_dirs=appinfo css img js l10n lib templates all_src=$(src_dirs) $(doc_files) acceptance_test_deps=vendor-bin/behat/vendor # bin file definitions PHPUNIT=php -d zend.enable_gc=0 "$(PWD)/../../lib/composer/bin/phpunit" PHPUNITDBG=phpdbg -qrr -d memory_limit=4096M -d zend.enable_gc=0 "$(PWD)/../../lib/composer/bin/phpunit" PHP_CS_FIXER=php -d zend.enable_gc=0 vendor-bin/owncloud-codestyle/vendor/bin/php-cs-fixer PHP_CODESNIFFER=vendor-bin/php_codesniffer/vendor/bin/phpcs PHAN=php -d zend.enable_gc=0 vendor-bin/phan/vendor/bin/phan PHPSTAN=php -d zend.enable_gc=0 vendor-bin/phpstan/vendor/bin/phpstan BEHAT_BIN=vendor-bin/behat/vendor/bin/behat # start with displaying help .DEFAULT_GOAL := help help: @fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//' | sed -e 's/ */ /' | column -t -s : .PHONY: clean clean: clean-composer-deps .PHONY: clean-composer-deps clean-composer-deps: rm -Rf vendor-bin/**/vendor vendor-bin/**/composer.lock ##--------------------- ## Build targets ##--------------------- .PHONY: dist dist: ## Build distribution dist: distdir package .PHONY: distdir distdir: rm -rf $(build_dir) mkdir -p $(dist_dir)/$(app_name) cp -R $(all_src) $(dist_dir)/$(app_name) .PHONY: package package: tar -czf $(dist_dir)/$(app_name).tar.gz -C $(dist_dir) $(app_name) ##--------------------- ## Tests ##--------------------- .PHONY: test-php-unit test-php-unit: ## Run php unit tests test-php-unit: ../../lib/composer/bin/phpunit $(PHPUNIT) --configuration ./phpunit.xml --testsuite unit .PHONY: test-php-unit-dbg test-php-unit-dbg: ## Run php unit tests using phpdbg test-php-unit-dbg: ../../lib/composer/bin/phpunit $(PHPUNITDBG) --configuration ./phpunit.xml --testsuite unit .PHONY: test-php-style test-php-style: ## Run php-cs-fixer and check owncloud code-style test-php-style: vendor-bin/owncloud-codestyle/vendor vendor-bin/php_codesniffer/vendor $(PHP_CS_FIXER) fix -v --diff --diff-format udiff --allow-risky yes --dry-run $(PHP_CODESNIFFER) --runtime-set ignore_warnings_on_exit --standard=phpcs.xml tests/acceptance .PHONY: test-php-style-fix test-php-style-fix: ## Run php-cs-fixer and fix code style issues test-php-style-fix: vendor-bin/owncloud-codestyle/vendor $(PHP_CS_FIXER) fix -v --diff --diff-format udiff --allow-risky yes .PHONY: test-php-phan test-php-phan: ## Run phan test-php-phan: vendor-bin/phan/vendor $(PHAN) --config-file .phan/config.php --require-config-exists .PHONY: test-php-phpstan test-php-phpstan: ## Run phpstan test-php-phpstan: vendor-bin/phpstan/vendor $(PHPSTAN) analyse --memory-limit=4G --configuration=./phpstan.neon --no-progress --level=5 appinfo lib .PHONY: test-acceptance-api test-acceptance-api: ## Run API acceptance tests test-acceptance-api: $(acceptance_test_deps) BEHAT_BIN=$(BEHAT_BIN) ../../tests/acceptance/run.sh --remote --type api .PHONY: test-acceptance-cli test-acceptance-cli: ## Run CLI acceptance tests test-acceptance-cli: $(acceptance_test_deps) BEHAT_BIN=$(BEHAT_BIN) ../../tests/acceptance/run.sh --remote --type cli .PHONY: test-acceptance-webui test-acceptance-webui: ## Run webUI acceptance tests test-acceptance-webui: $(acceptance_test_deps) BEHAT_BIN=$(BEHAT_BIN) ../../tests/acceptance/run.sh --remote --type webUI # # Dependency management #---------------------- composer.lock: composer.json @echo composer.lock is not up to date. vendor: composer.lock composer install --no-dev vendor/bamarni/composer-bin-plugin: composer.lock composer install vendor-bin/owncloud-codestyle/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/owncloud-codestyle/composer.lock composer bin owncloud-codestyle install --no-progress vendor-bin/owncloud-codestyle/composer.lock: vendor-bin/owncloud-codestyle/composer.json @echo owncloud-codestyle composer.lock is not up to date. vendor-bin/php_codesniffer/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/php_codesniffer/composer.lock composer bin php_codesniffer install --no-progress vendor-bin/php_codesniffer/composer.lock: vendor-bin/php_codesniffer/composer.json @echo php_codesniffer composer.lock is not up to date. vendor-bin/phan/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/phan/composer.lock composer bin phan install --no-progress vendor-bin/phan/composer.lock: vendor-bin/phan/composer.json @echo phan composer.lock is not up to date. vendor-bin/phpstan/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/phpstan/composer.lock composer bin phpstan install --no-progress vendor-bin/phpstan/composer.lock: vendor-bin/phpstan/composer.json @echo phpstan composer.lock is not up to date. vendor-bin/behat/vendor: vendor/bamarni/composer-bin-plugin vendor-bin/behat/composer.lock composer bin behat install --no-progress vendor-bin/behat/composer.lock: vendor-bin/behat/composer.json @echo behat composer.lock is not up to date.