From 1745eeeabaaf3235d7d5976597bd845272363205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20D=C3=A9siles?= <1536672+jokesterfr@users.noreply.github.com> Date: Fri, 16 Aug 2024 20:53:25 +0200 Subject: [PATCH] fea(run): bin/console polyfill for PS 1.6 to auto-install modules (#116) --- .github/workflows/pull-request.yml | 9 +- .gitignore | 2 - README.md | 2 +- assets/alpine-base-install.sh | 2 +- assets/patch.sh | 10 ++- assets/ps-console-polyfill.php | 59 +++++++++++++ assets/run.sh | 26 +++--- docker/alpine.Dockerfile | 1 + docker/debian.Dockerfile | 1 + .../init-scripts/install-mock.sh | 10 +-- .../modules/psalsace-v1.0.0.zip | Bin 199107 -> 201439 bytes .../modules/testmodule/testmodule.php | 6 +- .../testmodule/testmodule.php | 6 +- release.sh | 79 +++++++++--------- 14 files changed, 137 insertions(+), 76 deletions(-) create mode 100644 assets/ps-console-polyfill.php diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 86f0f02..2518599 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -70,7 +70,7 @@ jobs: strategy: fail-fast: true matrix: - ps_version: ["1.6.1.24", "1.7.6.9", "1.7.7.8", "1.7.8.11", "8.1.4"] + ps_version: ["1.6.1.24", "1.7.6.9", "1.7.7.8", "1.7.8.11", "8.1.7"] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -138,7 +138,7 @@ jobs: strategy: fail-fast: true matrix: - ps_version: ["1.6.1.24", "1.7.6.9", "1.7.7.8", "1.7.8.11", "8.1.4"] + ps_version: ["1.6.1.24", "1.7.6.9", "1.7.7.8", "1.7.8.11", "8.1.7"] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -154,6 +154,11 @@ jobs: env: DOCKER_IMAGE: prestashop/prestashop-flashlight:${{ matrix.ps_version }}-debian + - name: The image has a PrestaShop console CLI + run: docker run --env PS_DOMAIN='localhost:80' --entrypoint /bin/ls $DOCKER_IMAGE bin/console + env: + DOCKER_IMAGE: prestashop/prestashop-flashlight:${{ matrix.ps_version }}-debian + docker_build_nightly: name: "Docker build: PS nightly" runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 00e0125..ad76784 100644 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,6 @@ sonar-project.properties PrestaShop/ prestashop/ vendor/ -.prestashop-tags -.prestashop-minor-tags # cloudflared credentials credentials.json diff --git a/README.md b/README.md index 94ee298..dcb6b8e 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ On error, PrestaShop Flashlight can quit with these exit codes: ## Does Flashlight support PrestaShop 1.6? -Partially yes. As there is no console within the sources, the modules cannot be automatically installed right now. Feel free to contribute! +Yes. A polyfill is provided for the PrestaShop console, officially introduced in 1.7. ## Developing a module with RW (known Linux issue) diff --git a/assets/alpine-base-install.sh b/assets/alpine-base-install.sh index c2a8ac5..245f856 100755 --- a/assets/alpine-base-install.sh +++ b/assets/alpine-base-install.sh @@ -3,7 +3,7 @@ set -eu # Install base tools, PHP requirements and dev-tools apk --no-cache add -U \ - bash less vim geoip git tzdata zip curl jq autoconf \ + bash less vim geoip git tzdata zip curl jq autoconf findutils \ nginx nginx-mod-http-headers-more nginx-mod-http-geoip \ nginx-mod-stream nginx-mod-stream-geoip ca-certificates \ php-common php-iconv php-gd mariadb-client sudo libjpeg libxml2 \ diff --git a/assets/patch.sh b/assets/patch.sh index 92ab405..d986726 100755 --- a/assets/patch.sh +++ b/assets/patch.sh @@ -4,10 +4,18 @@ set -eu PS_FOLDER=${PS_FOLDER:?missing PS_FOLDER} PS_VERSION=$(awk 'NR==1{print $2}' "$PS_FOLDER/VERSION") +add_polyfill_console () { + mkdir -p "$PS_FOLDER/bin" + touch "$PS_FOLDER/bin/console" + mv /tmp/ps-console-polyfill.php "$PS_FOLDER/bin/console" + chmod +x "$PS_FOLDER/bin/console" +} + patch_1_6 () { echo "✅ Add a robots file for PrestaShop 1.6" echo "User-agent: *" > "$PS_FOLDER/admin/robots.txt" echo "Disallow: /" >> "$PS_FOLDER/admin/robots.txt" + add_polyfill_console } patch_1_7_6 () { @@ -20,7 +28,7 @@ patch_1_7_6 () { } patch_other () { - cat /dev/null # Nothing to do + rm -f /tmp/ps-console-polyfill.php } if echo "$PS_VERSION" | grep "^1.6" > /dev/null; then diff --git a/assets/ps-console-polyfill.php b/assets/ps-console-polyfill.php new file mode 100644 index 0000000..74723ce --- /dev/null +++ b/assets/ps-console-polyfill.php @@ -0,0 +1,59 @@ +#!/usr/local/bin/php -d memory_limit=-1 +=')) { + global $kernel; + if(!$kernel){ + require_once _PS_ROOT_DIR_.'/app/AppKernel.php'; + $kernel = new \AppKernel('dev', true); + $kernel->boot(); + } + } + $module = Module::getInstanceByName($moduleName); + $module->install(); +} + +function clearCache() { + $cacheDirs = [ + _PS_CACHEFS_DIRECTORY_ . '/smarty/compile', + _PS_CACHEFS_DIRECTORY_ . '/smarty/cache', + _PS_IMG_DIR_ . '/tmp', + ]; + foreach ($cacheDirs as $dir) { + $files = glob($dir . '/*'); + foreach ($files as $file) { + if (is_file($file)) { + unlink($file); + } + } + } +} + +switch ($argv[1]) { + case 'prestashop:module': + installModule($argv); + break; + case 'cache:clear': + clearCache(); + break; + default: + throw new Exception('This command is not supported by prestashop-flashlight\'s polyfill'); +} + diff --git a/assets/run.sh b/assets/run.sh index b342152..6dfa45d 100755 --- a/assets/run.sh +++ b/assets/run.sh @@ -181,21 +181,17 @@ fi # Eventually install some modules if [ ! -f $MODULES_INSTALLED_LOCK ] || [ "$INSTALL_MODULES_ON_RESTART" = "true" ]; then if [ -d "$INSTALL_MODULES_DIR" ]; then - if [ -f "$PS_FOLDER/bin/console" ]; then - for file in "$INSTALL_MODULES_DIR"/*.zip; do - module=$(unzip -l "$file" | awk 'NR==4{print $4}' | sed 's/\/$//' | tr "-" "\n" | head -n 1) - echo "--> Unzipping and installing $module from $file..." - rm -rf "/var/www/html/modules/${module:-something-at-least}" - unzip -qq "$file" -d /var/www/html/modules - if [ "$ON_INSTALL_MODULES_FAILURE" = "continue" ]; then - (php -d memory_limit=-1 "$PS_FOLDER/bin/console" prestashop:module --no-interaction install "$module") || { echo "x module installation failed. Skipping."; } - else - (php -d memory_limit=-1 "$PS_FOLDER/bin/console" prestashop:module --no-interaction install "$module") || { echo "x module installation failed. Sleep and exit."; sleep 10; exit 6; } - fi - done; - else - echo "Auto-installing modules with PrestaShop v1.6 is not yet supported"; - fi + for file in "$INSTALL_MODULES_DIR"/*.zip; do + module=$(unzip -l "$file" | awk 'NR==4{print $4}' | sed 's/\/$//' | tr "-" "\n" | head -n 1) + echo "--> Unzipping and installing $module from $file..." + rm -rf "/var/www/html/modules/${module:-something-at-least}" + unzip -qq "$file" -d /var/www/html/modules + if [ "$ON_INSTALL_MODULES_FAILURE" = "continue" ]; then + (php -d memory_limit=-1 "$PS_FOLDER/bin/console" prestashop:module --no-interaction install "$module") || { echo "x module installation failed. Skipping."; } + else + (php -d memory_limit=-1 "$PS_FOLDER/bin/console" prestashop:module --no-interaction install "$module") || { echo "x module installation failed. Sleep and exit."; sleep 10; exit 6; } + fi + done; fi touch $MODULES_INSTALLED_LOCK else diff --git a/docker/alpine.Dockerfile b/docker/alpine.Dockerfile index 7ab5b5c..7dfda28 100644 --- a/docker/alpine.Dockerfile +++ b/docker/alpine.Dockerfile @@ -22,6 +22,7 @@ COPY ./assets/nginx.conf /etc/nginx/nginx.conf COPY ./php-flavours.json /tmp COPY ./assets/php-configuration.sh /tmp/ COPY ./assets/alpine-base-install.sh /tmp/ +COPY ./assets/ps-console-polyfill.php /tmp/ COPY ./assets/coding-standards /var/opt/prestashop/coding-standards RUN /tmp/alpine-base-install.sh \ diff --git a/docker/debian.Dockerfile b/docker/debian.Dockerfile index 76867aa..63f0227 100644 --- a/docker/debian.Dockerfile +++ b/docker/debian.Dockerfile @@ -22,6 +22,7 @@ COPY ./assets/nginx.conf /etc/nginx/nginx.conf COPY ./php-flavours.json /tmp COPY ./assets/php-configuration.sh /tmp/ COPY ./assets/debian-base-install.sh /tmp/ +COPY ./assets/ps-console-polyfill.php /tmp/ COPY ./assets/coding-standards /var/opt/prestashop/coding-standards RUN /tmp/debian-base-install.sh \ diff --git a/examples/auto-install-modules/init-scripts/install-mock.sh b/examples/auto-install-modules/init-scripts/install-mock.sh index 222596f..c1ece0c 100755 --- a/examples/auto-install-modules/init-scripts/install-mock.sh +++ b/examples/auto-install-modules/init-scripts/install-mock.sh @@ -8,18 +8,14 @@ # set -eu -run_user () { - sudo -g www-data -u www-data -- "$@" -} - ps_accounts_mock_install() { echo "* [ps_accounts_mock] downloading..." - wget -q -O /tmp/ps_accounts.zip "https://github.com/PrestaShopCorp/ps_accounts_mock/releases/download/v1.0.0/ps_accounts.zip" + wget -q -O /tmp/ps_accounts.zip "https://github.com/PrestaShopCorp/ps_accounts_mock/releases/download/v7.0.2/ps_accounts.zip" echo "* [ps_accounts_mock] unzipping..." - run_user unzip -qq /tmp/ps_accounts.zip -d /var/www/html/modules + unzip -qq /tmp/ps_accounts.zip -d /var/www/html/modules echo "* [ps_accounts_mock] installing the module..." cd "$PS_FOLDER" - run_user php -d memory_limit=-1 bin/console prestashop:module --no-interaction install "ps_accounts" + php -d memory_limit=-1 bin/console prestashop:module --no-interaction install "ps_accounts" } ps_accounts_mock_install diff --git a/examples/auto-install-modules/modules/psalsace-v1.0.0.zip b/examples/auto-install-modules/modules/psalsace-v1.0.0.zip index 61d1a0a4bc0e359223fa9d93e1f5fd986c8b1b32..b4d8ac7802badf97b29e6aab46c4d3cc4f109b5a 100644 GIT binary patch delta 46579 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'J?U3@2H< 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 z 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 delta 44338 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 diff --git a/examples/develop-a-module/modules/testmodule/testmodule.php b/examples/develop-a-module/modules/testmodule/testmodule.php index 658553a..04823c7 100644 --- a/examples/develop-a-module/modules/testmodule/testmodule.php +++ b/examples/develop-a-module/modules/testmodule/testmodule.php @@ -23,9 +23,9 @@ public function __construct() $this->bootstrap = false; parent::__construct(); - $this->displayName = $this->trans('Test Module', [], 'Modules.Mymodule.Admin'); - $this->description = $this->trans('Test Module', [], 'Modules.Mymodule.Admin'); - $this->confirmUninstall = $this->trans('Are you sure you want to quit ModuleA?', [], 'Modules.Mymodule.Admin'); + $this->displayName = $this->l('Test Module', [], 'Modules.Mymodule.Admin'); + $this->description = $this->l('Test Module', [], 'Modules.Mymodule.Admin'); + $this->confirmUninstall = $this->l('Are you sure you want to quit ModuleA?', [], 'Modules.Mymodule.Admin'); require_once __DIR__ . '/vendor/autoload.php'; } diff --git a/examples/module-coding-standard/testmodule/testmodule.php b/examples/module-coding-standard/testmodule/testmodule.php index 658553a..04823c7 100644 --- a/examples/module-coding-standard/testmodule/testmodule.php +++ b/examples/module-coding-standard/testmodule/testmodule.php @@ -23,9 +23,9 @@ public function __construct() $this->bootstrap = false; parent::__construct(); - $this->displayName = $this->trans('Test Module', [], 'Modules.Mymodule.Admin'); - $this->description = $this->trans('Test Module', [], 'Modules.Mymodule.Admin'); - $this->confirmUninstall = $this->trans('Are you sure you want to quit ModuleA?', [], 'Modules.Mymodule.Admin'); + $this->displayName = $this->l('Test Module', [], 'Modules.Mymodule.Admin'); + $this->description = $this->l('Test Module', [], 'Modules.Mymodule.Admin'); + $this->confirmUninstall = $this->l('Are you sure you want to quit ModuleA?', [], 'Modules.Mymodule.Admin'); require_once __DIR__ . '/vendor/autoload.php'; } diff --git a/release.sh b/release.sh index b14931b..d1e5b61 100755 --- a/release.sh +++ b/release.sh @@ -1,36 +1,42 @@ #!/bin/sh set -eu -PRESTASHOP_TAGS=.prestashop-tags -PRESTASHOP_MINOR_TAGS=.prestashop-minor-tags - -get_prestashop_tags() { - git ls-remote --tags git@github.com:PrestaShop/PrestaShop.git \ - | cut -f2 \ - | grep -Ev '\/1.5|\/1.6.0|beta|rc|RC|\^' \ - | cut -d '/' -f3 \ - | sort -r -V > "$PRESTASHOP_TAGS" -} - -get_prestashop_minor_tags() { - printf "" > "$PRESTASHOP_MINOR_TAGS" - while IFS= read -r version; do - major_minor=$(echo "$version" | cut -d. -f1-2) - major_minor_patch=$(echo "$version" | cut -d. -f1-3) - criteria=$major_minor - # shellcheck disable=SC3010 - [[ "$major_minor" == 1* ]] && criteria=$major_minor_patch - if ! grep -q "^$criteria" "$PRESTASHOP_MINOR_TAGS"; then - echo "$version" >> "$PRESTASHOP_MINOR_TAGS" - fi - done < "$PRESTASHOP_TAGS" -} +EXCLUDED_TAGS='\/1.5|\/1.6.0|alpha|beta|rc|RC|\^' +PRESTASHOP_TAGS=$(git ls-remote --tags git@github.com:PrestaShop/PrestaShop.git | cut -f2 | grep -Ev $EXCLUDED_TAGS | cut -d '/' -f3 | sort -r -V) +# PRESTASHOP_MAJOR_TAGS=$( +# MAJOR_TAGS="" +# for VERSION in $PRESTASHOP_TAGS; do +# CRITERIA=$(echo "$VERSION" | cut -d. -f1) +# # shellcheck disable=SC3010 +# if [[ "$CRITERIA" == 1* ]]; then +# CRITERIA=$(echo "$VERSION" | cut -d. -f1-2) +# fi +# if ! echo "$MAJOR_TAGS" | grep -q "^$CRITERIA"; then +# MAJOR_TAGS="$MAJOR_TAGS\n$VERSION"; +# fi +# done +# echo "$MAJOR_TAGS" +# ) +# PRESTASHOP_MINOR_TAGS=$( +# MINOR_TAGS="" +# for VERSION in $PRESTASHOP_TAGS; do +# CRITERIA=$(echo "$VERSION" | cut -d. -f1-2) +# # shellcheck disable=SC3010 +# if [[ "$CRITERIA" == 1* ]]; then +# CRITERIA=$(echo "$VERSION" | cut -d. -f1-3) +# fi +# if ! echo "$MINOR_TAGS" | grep -q "^$CRITERIA"; then +# MINOR_TAGS="$MINOR_TAGS\n$VERSION"; +# fi +# done +# echo "$MINOR_TAGS" +# ) get_compatible_php_version() { - REGEXP_LIST=$(jq -r 'keys_unsorted | .[]'