Files
api/services/nginx/app/tests/Tooling/composer-entrypoint-autoload-recovery.sh
T

50 lines
1.1 KiB
Bash

#!/bin/sh
set -eu
tmp_dir="$(mktemp -d)"
cleanup() {
rm -rf "$tmp_dir"
}
trap cleanup EXIT HUP INT TERM
cat > "$tmp_dir/composer.json" <<'JSON'
{
"name": "truckwash/composer-entrypoint-fixture",
"autoload": {
"classmap": [
"src/"
]
}
}
JSON
mkdir -p "$tmp_dir/src"
cat > "$tmp_dir/src/FixtureClass.php" <<'PHP'
<?php
class FixtureClass
{
}
PHP
COMPOSER_ALLOW_SUPERUSER=1 composer install \
--no-dev \
--prefer-dist \
--optimize-autoloader \
--no-interaction \
-d "$tmp_dir" >/dev/null 2>&1
printf '%s\n' '<?php' > "$tmp_dir/vendor/composer/autoload_real.php"
AUTO_COMPOSER_INSTALL=true \
APP_DIR="$tmp_dir" \
MODULE_DIR="$tmp_dir/no-module" \
LOG_FILE="$tmp_dir/composer-install.log" \
/usr/local/bin/docker-entrypoint.sh \
php -r "require \$argv[1]; echo class_exists('FixtureClass') ? 'autoload-ok' . PHP_EOL : 'autoload-missing' . PHP_EOL;" \
"$tmp_dir/vendor/autoload.php" >/dev/null
php -d display_errors=1 -r "require \$argv[1]; exit(class_exists('FixtureClass') ? 0 : 1);" "$tmp_dir/vendor/autoload.php"
echo "composer-entrypoint-autoload-recovery-ok"