diff --git a/composer.json b/composer.json index 0fd2464..62db7a1 100644 --- a/composer.json +++ b/composer.json @@ -98,5 +98,5 @@ "minimum-stability": "stable", "prefer-stable": true, "version": "26.0.2", - "build": "71" + "build": "72" } diff --git a/git_update.sh b/git_update.sh index dc43690..9e73749 100755 --- a/git_update.sh +++ b/git_update.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# shellcheck disable=SC2016 set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -41,6 +42,62 @@ resolve_php_bin() { echo "php" } +resolve_configured_php_bin() { + local configured="${1:-}" + local current="${2:-php}" + local trimmed="$configured" + trimmed="${trimmed#"${trimmed%%[![:space:]]*}"}" + trimmed="${trimmed%"${trimmed##*[![:space:]]}"}" + + if [[ -z "$trimmed" ]]; then + echo "$current" + return + fi + + if [[ "$trimmed" == "keyhelp-php-domain" ]]; then + if command -v keyhelp-php-domain >/dev/null 2>&1; then + echo "keyhelp-php-domain" + return + fi + if command -v keyhelp-php84 >/dev/null 2>&1; then + echo "keyhelp-php84" + return + fi + if command -v php >/dev/null 2>&1; then + echo "php" + return + fi + echo "$current" + return + fi + + if command -v "$trimmed" >/dev/null 2>&1; then + echo "$trimmed" + return + fi + + if [[ "$trimmed" == */* && -x "$trimmed" ]]; then + echo "$trimmed" + return + fi + + echo "$current" +} + +read_setting_php_bin() { + if [[ ! -f artisan ]]; then + echo "" + return + fi + "$PHP_BIN" -r ' +require "vendor/autoload.php"; +$app = require "bootstrap/app.php"; +$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); +$value = (string) \App\Models\Setting::where("key", "system.php_binary")->value("value"); +echo trim($value); +' 2>/dev/null || true +} + PHP_BIN="$(resolve_php_bin)" echo "Resolved PHP binary: $PHP_BIN" if command -v "$PHP_BIN" >/dev/null 2>&1; then @@ -55,18 +112,10 @@ if [[ -z "$COMPOSER_BIN" ]]; then echo "Composer not found in PATH." exit 1 fi -$PHP_BIN "$COMPOSER_BIN" install --no-dev --optimize-autoloader +"$PHP_BIN" "$COMPOSER_BIN" install --no-dev --optimize-autoloader -if [[ -x "artisan" ]]; then - CONFIGURED_PHP="$($PHP_BIN artisan tinker --execute="echo \\App\\Models\\Setting::where('key','system.php_binary')->value('value') ?? '';" 2>/dev/null || true)" - if [[ -n "$CONFIGURED_PHP" ]]; then - if command -v "$CONFIGURED_PHP" >/dev/null 2>&1; then - PHP_BIN="$CONFIGURED_PHP" - elif [[ -x "$CONFIGURED_PHP" ]]; then - PHP_BIN="$CONFIGURED_PHP" - fi - fi -fi +CONFIGURED_PHP="$(read_setting_php_bin)" +PHP_BIN="$(resolve_configured_php_bin "$CONFIGURED_PHP" "$PHP_BIN")" echo "Final PHP binary: $PHP_BIN" if command -v "$PHP_BIN" >/dev/null 2>&1; then @@ -80,16 +129,16 @@ echo "Building assets..." npm run build echo "Running migrations..." -$PHP_BIN artisan migrate --force +"$PHP_BIN" artisan migrate --force echo "Syncing version/build to settings..." -VERSION="$($PHP_BIN -r '$c=json_decode(file_get_contents("composer.json"), true); echo $c["version"] ?? "";')" -BUILD="$($PHP_BIN -r '$c=json_decode(file_get_contents("composer.json"), true); echo $c["build"] ?? "";')" +VERSION="$("$PHP_BIN" -r '$c=json_decode(file_get_contents("composer.json"), true); echo $c["version"] ?? "";')" +BUILD="$("$PHP_BIN" -r '$c=json_decode(file_get_contents("composer.json"), true); echo $c["build"] ?? "";')" echo "Computed from composer.json: VERSION=$VERSION, BUILD=$BUILD" if [[ -n "$VERSION" || -n "$BUILD" ]]; then echo "Updating settings version/build (VERSION=$VERSION, BUILD=$BUILD)..." - SPEEDBB_VERSION="$VERSION" SPEEDBB_BUILD="$BUILD" $PHP_BIN -r ' + SPEEDBB_VERSION="$VERSION" SPEEDBB_BUILD="$BUILD" "$PHP_BIN" -r ' require "vendor/autoload.php"; $app = require "bootstrap/app.php"; $app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); @@ -116,7 +165,7 @@ if [[ -n "$VERSION" || -n "$BUILD" ]]; then echo "Updated build rows: {$updated}\n"; } ' \ - && $PHP_BIN -r ' + && "$PHP_BIN" -r ' require "vendor/autoload.php"; $app = require "bootstrap/app.php"; $app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();