@@ -3,15 +3,16 @@ SHELL=bash
3
3
4
4
.PHONY : *
5
5
6
+ DOCKER_AVAILABLE =$(shell ((command -v docker >/dev/null 2>&1) && echo 0 || echo 1))
6
7
CONTAINER_REGISTRY_REPO ="ghcr.io/wyrihaximusnet/php"
7
- COMPOSER_SHOW_EXTENSION_LIST_PROD =$(shell ((command -v docker >/dev/null 2>&1) && docker run --rm -v "` pwd ` :` pwd ` " -w ` pwd ` ${CONTAINER_REGISTRY_REPO}:8.4-nts-alpine-slim-dev composer show -t) | grep -o "\-\-\(ext-\).\+" | sort | uniq | cut -d- -f4- | tr -d '\n' | grep . | sed '/^$$/d' | xargs | sed -e 's/ /, /g' | tr -cd '[:alnum:],' | sed 's/.$$//')
8
- COMPOSER_SHOW_EXTENSION_LIST_DEV =$(shell ((command -v docker >/dev/null 2>&1) && docker run --rm -v "` pwd ` :` pwd ` " -w ` pwd ` ${CONTAINER_REGISTRY_REPO}:8.4-nts-alpine-slim-dev composer show -s) | grep -o "\(ext-\).\+" | sort | uniq | cut -d- -f2- | cut -d" " -f1 | xargs | sed -e 's/ /, /g' | tr -cd '[:alnum:],')
8
+ COMPOSER_SHOW_EXTENSION_LIST_PROD =$(shell ((( command -v composer >/dev/null 2>&1) && composer show -t --no-plugins) || docker run --rm -v "` pwd ` :` pwd ` " -w ` pwd ` ${CONTAINER_REGISTRY_REPO}:8.4-nts-alpine-slim-dev composer show -t --no-plugins ) | grep -o "\-\-\(ext-\).\+" | sort | uniq | cut -d- -f4- | tr -d '\n' | grep . | sed '/^$$/d' | xargs | sed -e 's/ /, /g' | tr -cd '[:alnum:],' | sed 's/.$$//')
9
+ COMPOSER_SHOW_EXTENSION_LIST_DEV =$(shell ((( command -v composer >/dev/null 2>&1) && composer show -s --no-plugins) || docker run --rm -v "` pwd ` :` pwd ` " -w ` pwd ` ${CONTAINER_REGISTRY_REPO}:8.4-nts-alpine-slim-dev composer show -s --no-plugins ) | grep -o "\(ext-\).\+" | sort | uniq | cut -d- -f2- | cut -d" " -f1 | xargs | sed -e 's/ /, /g' | tr -cd '[:alnum:],')
9
10
COMPOSER_SHOW_EXTENSION_LIST =$(shell echo "${COMPOSER_SHOW_EXTENSION_LIST_PROD},${COMPOSER_SHOW_EXTENSION_LIST_DEV}")
10
11
SLIM_DOCKER_IMAGE =$(shell php -r 'echo count(array_intersect(["gd", "vips"], explode(",", "${COMPOSER_SHOW_EXTENSION_LIST}") )) > 0 ? "" : "-slim";')
11
12
NTS_OR_ZTS_DOCKER_IMAGE =$(shell php -r 'echo count(array_intersect(["parallel"], explode(",", "${COMPOSER_SHOW_EXTENSION_LIST}") )) > 0 ? "zts" : "nts";')
12
13
PHP_VERSION: =$(shell (((command -v docker >/dev/null 2>&1) && docker run --rm -v "` pwd ` :` pwd ` " ${CONTAINER_REGISTRY_REPO}:8.4-nts-alpine-slim php -r "echo json_decode(file_get_contents('` pwd ` /composer.json'), true)['config']['platform']['php'];") || echo "8.3") | php -r "echo str_replace('|', '.', explode('.', implode('|', explode('.', stream_get_contents(STDIN), 2)), 2)[0]);")
13
14
CONTAINER_NAME =$(shell echo "${CONTAINER_REGISTRY_REPO}:${PHP_VERSION}-${NTS_OR_ZTS_DOCKER_IMAGE}-alpine${SLIM_DOCKER_IMAGE}-dev")
14
- COMPOSER_CACHE_DIR =$(shell (command -v docker >/dev/null 2>&1) && docker run --rm -v " ` pwd ` : ` pwd ` " -w ` pwd ` ${CONTAINER_REGISTRY_REPO}:8.4-nts-alpine-slim-dev composer config --global cache-dir -q || echo ${HOME}/.composer-php/cache)
15
+ COMPOSER_CACHE_DIR =$(shell (command -v composer >/dev/null 2>&1) && composer config --global cache-dir -q || echo ${HOME}/.composer-php/cache)
15
16
COMPOSER_CONTAINER_CACHE_DIR =$(shell ((command -v docker >/dev/null 2>&1) && docker run --rm -it ${CONTAINER_NAME} composer config --global cache-dir -q) || echo ${HOME}/.composer-php/cache)
16
17
17
18
ifneq ("$(wildcard /.you-are-in-a-wyrihaximus.net-php-docker-image) ","")
@@ -23,12 +24,16 @@ endif
23
24
ifeq ("$(IN_DOCKER ) ","TRUE")
24
25
DOCKER_RUN:=
25
26
else
26
- DOCKER_RUN:=docker run --rm -it \
27
- -v "`pwd`:`pwd`" \
28
- -v "${COMPOSER_CACHE_DIR}:${COMPOSER_CONTAINER_CACHE_DIR}" \
29
- -w "`pwd`" \
30
- -e OTEL_PHP_FIBERS_ENABLED="true" \
31
- "${CONTAINER_NAME}"
27
+ ifeq ($(DOCKER_AVAILABLE),0)
28
+ DOCKER_RUN: =docker run --rm -it \
29
+ -v "` pwd ` :` pwd ` " \
30
+ -v "${COMPOSER_CACHE_DIR}:${COMPOSER_CONTAINER_CACHE_DIR}" \
31
+ -w "` pwd ` " \
32
+ -e OTEL_PHP_FIBERS_ENABLED="true" \
33
+ "${CONTAINER_NAME}"
34
+ else
35
+ DOCKER_RUN: =
36
+ endif
32
37
endif
33
38
34
39
ifneq (,$(findstring icrosoft,$(shell cat /proc/version) ) )
38
43
endif
39
44
40
45
all : # # Runs everything ####
41
- @grep -E ' ^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | grep -v " ####" | awk ' BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | xargs -o $(MAKE )
46
+ @grep -E ' ^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | grep -v " ##*I*## " | grep -v " ## ##" | awk ' BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | xargs -o $(MAKE )
42
47
43
48
on-install-or-update : # # Runs everything ####
44
49
@grep -E ' ^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | grep -E " ##\*(I|ILH)\*##" | awk ' BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | xargs -o $(MAKE )
@@ -69,10 +74,10 @@ unit-testing-raw: ## Run tests ##*D*## ####
69
74
php vendor/phpunit/phpunit/phpunit --colors=always -c ./etc/qa/phpunit.xml --coverage-text --coverage-html ./var/tests-unit-coverage-html --coverage-clover ./var/tests-unit-clover-coverage.xml
70
75
71
76
mutation-testing : # # Run mutation testing ##*LCH*##
72
- $(DOCKER_RUN ) vendor/bin/infection --ansi --log-verbosity=all --ignore-msi-with-no-mutations --threads=$(THREADS ) || (cat ./var/infection.log && false)
77
+ $(DOCKER_RUN ) vendor/bin/infection --ansi --log-verbosity=all --ignore-msi-with-no-mutations --configuration=./etc/qa/infection.json5 -- threads=$(THREADS ) || (cat ./var/infection.log && false)
73
78
74
79
mutation-testing-raw : # # Run mutation testing ####
75
- vendor/bin/infection --ansi --log-verbosity=all --ignore-msi-with-no-mutations --threads=$(THREADS ) || (cat ./var/infection.log && false)
80
+ vendor/bin/infection --ansi --log-verbosity=all --ignore-msi-with-no-mutations --configuration=./etc/qa/infection.json5 -- threads=$(THREADS ) || (cat ./var/infection.log && false)
76
81
77
82
composer-require-checker : # # Ensure we require every package used in this package directly ##*C*##
78
83
$(DOCKER_RUN ) vendor/bin/composer-require-checker --ignore-parse-errors --ansi -vvv --config-file=./etc/qa/composer-require-checker.json
@@ -118,3 +123,14 @@ task-list-ci-locked: ## CI: Generate a JSON array of jobs to run against the loc
118
123
task-list-ci-high : # # CI: Generate a JSON array of jobs to run against the highest dependencies on the primary threading target
119
124
@grep -E ' ^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | grep -E " ##\*(H|LH|LCH|LC)\*##" | grep -v " ###" | sort | awk ' BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | jq --raw-input --slurp -c ' split("\n")| .[0:-1]'
120
125
126
+
127
+ # # Temporary set of migrations to get all my repos in shape
128
+ php-migrations-move-infection : # ### Move infection.json.dist to etc/qa/infection.json5 ##*I*##
129
+ ($( DOCKER_RUN) mv infection.json.dist etc/qa/infection.json5 || true)
130
+
131
+ php-migrations-remove-phpunit-config-dir-from-infection : # ### Drop XXX from etc/qa/infection.json5 ##*I*##
132
+ ($( DOCKER_RUN) php -r ' $$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("phpUnit", $$json)) {exit;} unset($$json["phpUnit"]); file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
133
+
134
+ php-migrations-fix-logs-relative-paths-for-infection : # ### Fix logs paths in etc/qa/infection.json5 ##*I*##
135
+ ($( DOCKER_RUN) php -r ' $$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) {exit;} foreach ($$json["logs"] as $$logsKey => $$logsPath) { if (is_string($$json["logs"][$$logsKey]) && str_starts_with($$json["logs"][$$logsKey], "./var/infection")) { $$json["logs"][$$logsKey] = str_replace("./var/infection", "../../var/infection", $$json["logs"][$$logsKey]); } } file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
136
+
0 commit comments