Current File : /var/www/vinorea/modules/psxdesign/vendor/humbug/php-scoper/Makefile
# See https://tech.davis-hansson.com/p/make/
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules

.DEFAULT_GOAL := help

PHPBIN=php
PHPNOGC=php -d zend.enable_gc=0

SRC_FILES=$(shell find bin/ src/ -type f)

.PHONY: help
help:
	@echo "\033[33mUsage:\033[0m\n  make TARGET\n\n\033[32m#\n# Commands\n#---------------------------------------------------------------------------\033[0m\n"
	@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//' | awk 'BEGIN {FS = ":"}; {printf "\033[33m%s:\033[0m%s\n", $$1, $$2}'


#
# Build
#---------------------------------------------------------------------------

.PHONY: clean
clean:	 ## Clean all created artifacts
clean:
	git clean --exclude=.idea/ -ffdx

update-root-version: ## Check the lastest GitHub release and update COMPOSER_ROOT_VERSION accordingly
update-root-version:
	rm .composer-root-version || true
	$(MAKE) .composer-root-version


.PHONY: cs
CODE_SNIFFER=vendor-bin/code-sniffer/vendor/bin/phpcs
CODE_SNIFFER_FIX=vendor-bin/code-sniffer/vendor/bin/phpcbf
cs:	 ## Fixes CS
cs: $(CODE_SNIFFER) $(CODE_SNIFFER_FIX)
	$(PHPNOGC) $(CODE_SNIFFER_FIX) || true
	$(PHPNOGC) $(CODE_SNIFFER)

.PHONY: cs-check
cs-check: ## Checks CS
cs-check: $(CODE_SNIFFER)
	$(PHPNOGC) $(CODE_SNIFFER)

.PHONY: phpstan
PHPSTAN=bin/phpstan
phpstan: ## Runs PHPStan
phpstan: $(PHPSTAN)
	$(PHPNOGC) $(PHPSTAN) analyze src --level max

.PHONY: build
build:	 ## Build the PHAR
BOX=bin/box
build: bin/php-scoper.phar


#
# Tests
#---------------------------------------------------------------------------

.PHONY: test
test:	 ## Run all the tests
test: check-composer-root-version tc e2e

.PHONY: check-composer-root-version
check-composer-root-version:	## Checks that the COMPOSER_ROOT_VERSION is up to date
check-composer-root-version: .composer-root-version
	php bin/check-composer-root-version.php

.PHONY: tu
PHPUNIT=bin/phpunit
tu:	 ## Run PHPUnit tests
tu: bin/phpunit
	$(PHPBIN) $(PHPUNIT)

.PHONY: tc
tc:	 ## Run PHPUnit tests with test coverage
tc: bin/phpunit vendor-bin/covers-validator/vendor clover.xml

.PHONY: tm
tm:	 ## Run Infection (Mutation Testing)
tm: clover.xml
	$(MAKE) e2e_020

.PHONY: e2e
e2e:	 ## Run end-to-end tests
e2e: e2e_004 e2e_005 e2e_011 e2e_013 e2e_014 e2e_015 e2e_016 e2e_017 e2e_018 e2e_019 e2e_020 e2e_021 e2e_022 e2e_023 e2e_024 e2e_025 e2e_026 e2e_027 e2e_028 e2e_029 e2e_030 e2e_031 e2e_032

PHPSCOPER=bin/php-scoper.phar

.PHONY: e2e_004
e2e_004: ## Run end-to-end tests for the fixture set 004 — Source code case
e2e_004: $(PHPSCOPER)
	$(PHPBIN) $(BOX) compile --no-parallel --working-dir fixtures/set004

	php build/set004/bin/greet.phar > build/set004/output
	diff fixtures/set004/expected-output build/set004/output

.PHONY: e2e_005
e2e_005: ## Run end-to-end tests for the fixture set 005 — Third-party code case
e2e_005: $(PHPSCOPER) fixtures/set005/vendor
	$(PHPBIN) $(BOX) compile --no-parallel --working-dir fixtures/set005

	php build/set005/bin/greet.phar > build/set005/output
	diff fixtures/set005/expected-output build/set005/output

.PHONY: e2e_011
e2e_011: ## Run end-to-end tests for the fixture set 011 — Whitelist case
e2e_011: $(PHPSCOPER) fixtures/set011/vendor
	$(PHPBIN) $(BOX) compile --no-parallel --working-dir fixtures/set011
	cp -R fixtures/set011/tests/ build/set011/tests/

	php build/set011/bin/greet.phar > build/set011/output
	diff fixtures/set011/expected-output build/set011/output

.PHONY: e2e_013
e2e_013: # Run end-to-end tests for the fixture set 013 — The init command
e2e_013: $(PHPSCOPER)
	rm -rf build/set013
	cp -R fixtures/set013 build/set013
	$(PHPSCOPER) init --working-dir=build/set013 --no-interaction
	diff src/scoper.inc.php.tpl build/set013/scoper.inc.php

.PHONY: e2e_014
e2e_014: ## Run end-to-end tests for the fixture set 014 — Source code case with PSR-0
e2e_014: $(PHPSCOPER)
	$(PHPBIN) $(BOX) compile --no-parallel --working-dir fixtures/set014

	php build/set014/bin/greet.phar > build/set014/output
	diff fixtures/set014/expected-output build/set014/output

.PHONY: e2e_015
e2e_015: ## Run end-to-end tests for the fixture set 015 — Third-party code case with PSR-0
e2e_015: $(PHPSCOPER) fixtures/set015/vendor
	$(PHPBIN) $(BOX) compile --no-parallel --working-dir fixtures/set015

	php build/set015/bin/greet.phar > build/set015/output
	diff fixtures/set015/expected-output build/set015/output

.PHONY: e2e_016
e2e_016: ## Run end-to-end tests for the fixture set 016 — Symfony Finder
e2e_016: $(PHPSCOPER) fixtures/set016-symfony-finder/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set016-symfony-finder \
		--output-dir=../../build/set016-symfony-finder \
		--force \
		--no-config \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set016-symfony-finder dump-autoload

	php build/set016-symfony-finder/main.php > build/set016-symfony-finder/output
	diff fixtures/set016-symfony-finder/expected-output build/set016-symfony-finder/output

.PHONY: e2e_017
e2e_017: ## Run end-to-end tests for the fixture set 017 — Symfony DependencyInjection
e2e_017: $(PHPSCOPER) fixtures/set017-symfony-di/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set017-symfony-di \
		--output-dir=../../build/set017-symfony-di \
		--force \
		--no-config \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set017-symfony-di dump-autoload

	php build/set017-symfony-di/main.php > build/set017-symfony-di/output
	diff fixtures/set017-symfony-di/expected-output build/set017-symfony-di/output

.PHONY: e2e_018
e2e_018: ## Run end-to-end tests for the fixture set 018 — Nikic PHP-Parser
e2e_018: $(PHPSCOPER) fixtures/set018-nikic-parser/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set018-nikic-parser \
		--prefix=_Prefixed \
		--output-dir=../../build/set018-nikic-parser \
		--force \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set018-nikic-parser dump-autoload

	php build/set018-nikic-parser/main.php > build/set018-nikic-parser/output
	diff fixtures/set018-nikic-parser/expected-output build/set018-nikic-parser/output

.PHONY: e2e_019
e2e_019: ## Run end-to-end tests for the fixture set 019 — Symfony Console
e2e_019: $(PHPSCOPER) fixtures/set019-symfony-console/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix --working-dir=fixtures/set019-symfony-console \
		--prefix=_Prefixed \
		--output-dir=../../build/set019-symfony-console \
		--force \
		--no-config \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set019-symfony-console dump-autoload

	php build/set019-symfony-console/main.php > build/set019-symfony-console/output
	diff fixtures/set019-symfony-console/expected-output build/set019-symfony-console/output

.PHONY: e2e_020
e2e_020: ## Run end-to-end tests for the fixture set 020 — Infection
e2e_020: $(PHPSCOPER) fixtures/set020-infection/vendor clover.xml
	$(PHPBIN) $(PHPSCOPER) add-prefix --working-dir=fixtures/set020-infection \
		--output-dir=../../build/set020-infection \
		--force \
		--no-interaction
	composer --working-dir=build/set020-infection dump-autoload

	php fixtures/set020-infection/vendor/infection/infection/bin/infection \
		--coverage=dist/infection-coverage \
		> build/set020-infection/expected-output
	sed 's/Time.*//' build/set020-infection/expected-output > build/set020-infection/expected-output

	php build/set020-infection/vendor/infection/infection/bin/infection \
		--coverage=dist/infection-coverage \
		> build/set020-infection/output
	sed 's/Time.*//' build/set020-infection/output > build/set020-infection/output

	diff build/set020-infection/expected-output build/set020-infection/output

.PHONY: e2e_021
e2e_021: ## Run end-to-end tests for the fixture set 021 — Composer
e2e_021: $(PHPSCOPER) fixtures/set021-composer/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix --working-dir=fixtures/set021-composer \
		--output-dir=../../build/set021-composer \
		--force \
		--no-interaction \
		--stop-on-failure \
		--no-config
	composer --working-dir=build/set021-composer dump-autoload

	php fixtures/set021-composer/vendor/composer/composer/bin/composer licenses \
		--no-plugins \
		> build/set021-composer/expected-output
	php build/set021-composer/vendor/composer/composer/bin/composer licenses \
		--no-plugins \
		> build/set021-composer/output

	diff build/set021-composer/expected-output build/set021-composer/output

.PHONY: e2e_022
e2e_022: ## Run end-to-end tests for the fixture set 022 — Whitelist the project code with namespace whitelisting
e2e_022: $(PHPSCOPER) fixtures/set022/vendor
	$(PHPBIN) $(BOX) compile --no-parallel --working-dir fixtures/set022
	cp -R fixtures/set022/tests/ build/set022/tests/

	php build/set022/bin/greet.phar > build/set022/output

	diff fixtures/set022/expected-output build/set022/output

.PHONY: e2e_023
e2e_023: ## Run end-to-end tests for the fixture set 023 — Whitelisting a whole third-party component with namespace whitelisting
e2e_023: $(PHPSCOPER) fixtures/set023/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix --working-dir=fixtures/set023 \
		--output-dir=../../build/set023 \
		--force \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set023 dump-autoload

	php build/set023/main.php > build/set023/output
	diff fixtures/set023/expected-output build/set023/output

.PHONY: e2e_024
e2e_024: ## Run end-to-end tests for the fixture set 024 — Whitelisting user functions registered in the global namespace
e2e_024: $(PHPSCOPER) fixtures/set024/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set024 \
		--output-dir=../../build/set024 \
		--force \
		--no-interaction \
		--stop-on-failure \
		--no-config
	composer --working-dir=build/set024 dump-autoload

	php build/set024/main.php > build/set024/output
	diff fixtures/set024/expected-output build/set024/output

.PHONY: e2e_025
e2e_025: ## Run end-to-end tests for the fixture set 025 — Whitelisting a vendor function
e2e_025: $(PHPSCOPER) fixtures/set025/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set025 \
		--output-dir=../../build/set025 \
		--force \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set025 dump-autoload

	php build/set025/main.php > build/set025/output
	diff fixtures/set025/expected-output build/set025/output

.PHONY: e2e_026
e2e_026: ## Run end-to-end tests for the fixture set 026 — Whitelisting classes and functions with pattern matching
e2e_026: $(PHPSCOPER) fixtures/set026/vendor
	$(PHPBIN) $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set026 \
		--output-dir=../../build/set026 \
		--force \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set026 dump-autoload

	php build/set026/main.php > build/set026/output
	diff fixtures/set026/expected-output build/set026/output

.PHONY: e2e_027
e2e_027: ## Run end-to-end tests for the fixture set 027 — Laravel
e2e_027: $(PHPSCOPER) fixtures/set027-laravel/vendor
	php $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set027-laravel \
		--output-dir=../../build/set027-laravel \
		--no-config \
		--force \
		--no-interaction \
		--stop-on-failure
	composer --working-dir=build/set027-laravel dump-autoload --no-dev

	php build/set027-laravel/artisan -V > build/set027-laravel/output
	diff fixtures/set027-laravel/expected-output build/set027-laravel/output

.PHONY: e2e_028
e2e_028: ## Run end-to-end tests for the fixture set 028 — Symfony
e2e_028: $(PHPSCOPER) fixtures/set028-symfony/vendor
	php $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set028-symfony \
		--output-dir=../../build/set028-symfony \
		--no-config \
		--force \
		--no-interaction \
		--stop-on-failure

	APP_ENV=dev composer --working-dir=fixtures/set028-symfony dump-autoload --no-dev
	APP_ENV=dev php fixtures/set028-symfony/bin/console -V > fixtures/set028-symfony/expected-output

	APP_ENV=dev composer --working-dir=build/set028-symfony dump-autoload --no-dev
	APP_ENV=dev php build/set028-symfony/bin/console -V > build/set028-symfony/output

	diff fixtures/set028-symfony/expected-output build/set028-symfony/output

.PHONY: e2e_029
e2e_029: ## Run end-to-end tests for the fixture set 029 — EasyRdf
e2e_029: $(PHPSCOPER) fixtures/set029-easy-rdf/vendor
	php $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set029-easy-rdf \
		--output-dir=../../build/set029-easy-rdf \
		--no-config \
		--force \
		--no-interaction \
		--stop-on-failure

	php fixtures/set029-easy-rdf/main.php > fixtures/set029-easy-rdf/expected-output

	composer --working-dir=build/set029-easy-rdf dump-autoload --no-dev
	php build/set029-easy-rdf/main.php > build/set029-easy-rdf/output

	diff fixtures/set029-easy-rdf/expected-output build/set029-easy-rdf/output
	diff fixtures/set028-symfony/expected-output build/set028-symfony/output

.PHONY: e2e_030
e2e_030: ## Run end-to-end tests for the fixture set 030 — global function whitelisting
e2e_030: $(PHPSCOPER) fixtures/set030/vendor
	php $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set030 \
		--output-dir=../../build/set030 \
		--no-config \
		--force \
		--no-interaction \
		--stop-on-failure

	php fixtures/set030/main.php > fixtures/set030/expected-output

	composer --working-dir=build/set030 dump-autoload --no-dev
	php build/set030/main.php > build/set030/output

	diff fixtures/set030/expected-output build/set030/output

.PHONY: e2e_031
e2e_031: ## Run end-to-end tests for the fixture set 031 — unloaded extension symbol
e2e_031: $(PHPSCOPER)
	php $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set031-extension-symbol \
		--output-dir=../../build/set031-extension-symbol \
		--force \
		--no-interaction \
		--stop-on-failure

	diff fixtures/set031-extension-symbol/expected-main.php build/set031-extension-symbol/main.php

.PHONY: e2e_032
e2e_032: ## Run end-to-end tests for the fixture set 032 — isolated finder
e2e_032: $(PHPSCOPER)
	php $(PHPSCOPER) add-prefix \
		--working-dir=fixtures/set032-isolated-finder \
		--output-dir=../../build/set032-isolated-finder \
		--force \
		--no-interaction \
		--stop-on-failure

	tree build/set032-isolated-finder > build/set032-isolated-finder/actual-tree

	diff fixtures/set032-isolated-finder/expected-tree build/set032-isolated-finder/actual-tree

.PHONY: tb
BLACKFIRE=blackfire
tb:	 ## Run Blackfire profiling
tb: bin/php-scoper.phar  vendor
	$(BLACKFIRE) --new-reference run $(PHPBIN) bin/php-scoper.phar add-prefix --output-dir=build/php-scoper --force --quiet

#
# Rules from files
#---------------------------------------------------------------------------

vendor: composer.lock .composer-root-version
	/bin/bash -c 'source .composer-root-version && composer install'
	touch $@

vendor/bamarni: composer.lock .composer-root-version
	/bin/bash -c 'source .composer-root-version && composer install'
	touch $@

bin/phpunit: composer.lock .composer-root-version
	/bin/bash -c 'source .composer-root-version && composer install'
	touch $@

vendor-bin/covers-validator/vendor: vendor-bin/covers-validator/composer.lock vendor/bamarni
	composer bin covers-validator install
	touch $@

vendor-bin/code-sniffer/vendor: vendor-bin/code-sniffer/composer.lock vendor/bamarni
	composer bin code-sniffer install
	touch $@

fixtures/set005/vendor: fixtures/set005/composer.lock
	composer --working-dir=fixtures/set005 install
	touch $@

fixtures/set011/vendor:
	composer --working-dir=fixtures/set011 dump-autoload
	touch $@

fixtures/set015/vendor: fixtures/set015/composer.lock
	composer --working-dir=fixtures/set015 install
	touch $@

fixtures/set016-symfony-finder/vendor: fixtures/set016-symfony-finder/composer.lock
	composer --working-dir=fixtures/set016-symfony-finder install
	touch $@

fixtures/set017-symfony-di/vendor: fixtures/set017-symfony-di/composer.lock
	composer --working-dir=fixtures/set017-symfony-di install
	touch $@

fixtures/set018-nikic-parser/vendor: fixtures/set018-nikic-parser/composer.lock
	composer --working-dir=fixtures/set018-nikic-parser install
	touch $@

fixtures/set019-symfony-console/vendor: fixtures/set019-symfony-console/composer.lock
	composer --working-dir=fixtures/set019-symfony-console install
	touch $@

fixtures/set020-infection/vendor: fixtures/set020-infection/composer.lock
	composer --working-dir=fixtures/set020-infection install
	touch $@

fixtures/set021-composer/vendor: fixtures/set021-composer/composer.lock
	composer --working-dir=fixtures/set021-composer install
	touch $@

fixtures/set022/vendor: fixtures/set022/composer.json
	composer --working-dir=fixtures/set022 update
	touch $@

fixtures/set023/vendor: fixtures/set023/composer.lock
	composer --working-dir=fixtures/set023 install
	touch $@

fixtures/set024/vendor: fixtures/set024/composer.lock
	composer --working-dir=fixtures/set024 install
	touch $@

fixtures/set025/vendor: fixtures/set025/composer.lock
	composer --working-dir=fixtures/set025 install
	touch $@

fixtures/set026/vendor:
	composer --working-dir=fixtures/set026 update
	touch $@

fixtures/set027-laravel/vendor: fixtures/set027-laravel/composer.lock
	composer --working-dir=fixtures/set027-laravel install --no-dev
	touch $@

fixtures/set028-symfony/vendor: fixtures/set028-symfony/composer.lock
	composer --working-dir=fixtures/set028-symfony install --no-dev --no-scripts
	touch $@

fixtures/set029-easy-rdf/vendor: fixtures/set029-easy-rdf/composer.lock
	composer --working-dir=fixtures/set029-easy-rdf install --no-dev
	touch $@

fixtures/set030/vendor: fixtures/set030/composer.json
	composer --working-dir=fixtures/set030 install --no-dev
	touch $@

composer.lock: composer.json
	@echo composer.lock is not up to date.

vendor-bin/covers-validator/composer.lock: vendor-bin/covers-validator/composer.json
	@echo covers-validator composer.lock is not up to date

vendor-bin/code-sniffer/composer.lock: vendor-bin/code-sniffer/composer.json
	@echo code-sniffer composer.lock is not up to date

fixtures/set005/composer.lock: fixtures/set005/composer.json
	@echo fixtures/set005/composer.lock is not up to date.

fixtures/set015/composer.lock: fixtures/set015/composer.json
	@echo fixtures/set015/composer.lock is not up to date.

fixtures/set016-symfony-finder/composer.lock: fixtures/set016-symfony-finder/composer.json
	@echo fixtures/set016-symfony-finder/composer.lock is not up to date.

fixtures/set017-symfony-di/composer.lock: fixtures/set017-symfony-di/composer.json
	@echo fixtures/set017-symfony-di/composer.lock is not up to date.

fixtures/set018-nikic-parser/composer.lock: fixtures/set018-nikic-parser/composer.json
	@echo fixtures/set018-nikic-parser/composer.lock is not up to date.

fixtures/set019-symfony-console/composer.lock: fixtures/set019-symfony-console/composer.json
	@echo fixtures/set019-symfony-console/composer.lock is not up to date.

fixtures/set020-infection/composer.lock: fixtures/set020-infection/composer.json
	@echo fixtures/set020-infection/composer.lock is not up to date.

fixtures/set021-composer/composer.lock: fixtures/set021-composer/composer.json
	@echo fixtures/set021-composer/composer.lock is not up to date.

fixtures/set023/composer.lock: fixtures/set023/composer.json
	@echo fixtures/set023/composer.lock is not up to date.

fixtures/set024/composer.lock: fixtures/set024/composer.json
	@echo fixtures/set024/composer.lock is not up to date.

fixtures/set025/composer.lock: fixtures/set025/composer.json
	@echo fixtures/set025/composer.lock is not up to date.

fixtures/set027-laravel/composer.lock: fixtures/set027-laravel/composer.json
	@echo fixtures/set027-laravel/composer.lock is not up to date.

fixtures/set028-symfony/composer.lock: fixtures/set028-symfony/composer.json
	@echo fixtures/set028-symfony/composer.lock is not up to date.

fixtures/set029-easy-rdf/composer.lock: fixtures/set029-easy-rdf/composer.json
	@echo fixtures/set029-easy-rdf/composer.lock is not up to date.

bin/php-scoper.phar: bin/php-scoper $(SRC_FILES) vendor scoper.inc.php box.json.dist
	$(BOX) compile
	touch $@

COVERS_VALIDATOR=$(PHPBIN) vendor-bin/covers-validator/bin/covers-validator
clover.xml: $(SRC_FILES)
	$(COVERS_VALIDATOR)
	php -d zend.enable_gc=0 $(PHPUNIT) \
		--coverage-html=dist/coverage \
		--coverage-text \
		--coverage-clover=clover.xml \
		--coverage-xml=dist/infection-coverage/coverage-xml \
		--log-junit=dist/infection-coverage/junit.xml

$(CODE_SNIFFER): vendor-bin/code-sniffer/vendor
	composer bin code-sniffer install
	touch $@

$(CODE_SNIFFER_FIX): vendor-bin/code-sniffer/vendor
	composer bin code-sniffer install
	touch $@

$(PHPSTAN): vendor/bamarni
	composer bin phpstan install
	touch $@

.composer-root-version:
	php bin/dump-composer-root-version.php
	touch $@