From 502e4efb734c1dffa3cfd4645534441dc5866b98 Mon Sep 17 00:00:00 2001 From: marito Date: Sun, 15 Jun 2025 11:52:37 +0800 Subject: [PATCH] composer wrapper update --- .../composer/templates/composer-wrapper.sh.j2 | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/roles/composer/templates/composer-wrapper.sh.j2 b/roles/composer/templates/composer-wrapper.sh.j2 index 79d0a66..01380d1 100644 --- a/roles/composer/templates/composer-wrapper.sh.j2 +++ b/roles/composer/templates/composer-wrapper.sh.j2 @@ -1,38 +1,36 @@ #!/bin/bash -# Lenvi Smart Composer Wrapper +# +# Lenvi Smart Composer Wrapper (v2) +# # This script automatically detects the required PHP version for a project -# by looking for a `Lenvi.yaml` file and uses the correct PHP binary. +# by reading a central Lenvi.yaml file and uses the correct PHP binary. +# --- The real composer binary and default PHP --- COMPOSER_PHAR="/usr/local/bin/composer.phar" DEFAULT_PHP_BINARY="/usr/bin/php" PHP_BINARY="" -# Find the Lenvi.yaml file by looking in parent directories -LENVI_CONFIG_FILE="" -SEARCH_DIR=$(pwd) -while [[ "$SEARCH_DIR" != "" && ! -f "$SEARCH_DIR/Lenvi.yaml" ]]; do - SEARCH_DIR=${SEARCH_DIR%/*} -done +# --- The EXACT path to the configuration file, baked in by Ansible --- +LENVI_CONFIG_FILE="{{ playbook_dir }}/Lenvi.yaml" -if [[ -f "$SEARCH_DIR/Lenvi.yaml" ]]; then - LENVI_CONFIG_FILE="$SEARCH_DIR/Lenvi.yaml" -fi - -if [[ -n "$LENVI_CONFIG_FILE" ]]; then - # We found a config file, now find the PHP version for the current project directory +# Check if the central config file actually exists +if [[ -f "$LENVI_CONFIG_FILE" ]]; then + # We have the config file, now find the PHP version for the current project directory CURRENT_PROJECT_ROOT=$(pwd) PHP_VERSION=$(yq eval '.sites[] | select(.project_root == "'"$CURRENT_PROJECT_ROOT"'") | .php_version' "$LENVI_CONFIG_FILE") if [[ -n "$PHP_VERSION" && -x "/usr/bin/php$PHP_VERSION" ]]; then + # Version found and the corresponding PHP binary exists PHP_BINARY="/usr/bin/php$PHP_VERSION" - echo "Lenvi: Project found. Using PHP $PHP_VERSION..." >&2 + echo "Lenvi: Project configuration found. Using PHP $PHP_VERSION..." >&2 fi fi -# If no specific PHP binary was found, use the system default +# If no specific PHP binary was found after checking, use the system default if [[ -z "$PHP_BINARY" ]]; then - echo "Lenvi: No project configuration found for this directory. Using default system PHP." >&2 + echo "Lenvi: No specific project configuration found for this directory. Using default system PHP." >&2 PHP_BINARY="$DEFAULT_PHP_BINARY" fi +# Execute the real Composer with the determined PHP version and pass all arguments exec "$PHP_BINARY" "$COMPOSER_PHAR" "$@" \ No newline at end of file