From c0d77e456458b9a6fc3baf5438796e40d5acf4ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Wed, 25 Sep 2019 14:47:55 +0200 Subject: [PATCH] Install Composer PHAR to tools directory [MAILPOET-2405] --- .circleci/config.yml | 7 +++---- .gitignore | 1 - README.md | 5 ----- RoboFile.php | 8 ++++---- build.sh | 8 ++++---- composer.json | 8 ++++---- do | 14 +++++++++++++- prefixer/process.sh | 5 +++-- tests/docker/codeception/docker-entrypoint.sh | 4 ++-- tools/install.php | 1 + 10 files changed, 34 insertions(+), 27 deletions(-) mode change 120000 => 100755 do diff --git a/.circleci/config.yml b/.circleci/config.yml index 5bab083949..4fac45b368 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -19,10 +19,9 @@ jobs: name: "Set up test environment" command: | # install plugin dependencies - curl -sS https://getcomposer.org/installer | php - ./composer.phar validate --no-check-all --no-check-publish - ./composer.phar validate --no-check-all --no-check-publish --working-dir=prefixer - ./composer.phar install + COMPOSER_DEV_MODE=1 php tools/install.php + ./tools/vendor/composer.phar validate --no-check-all --no-check-publish + ./tools/vendor/composer.phar validate --no-check-all --no-check-publish --working-dir=prefixer touch .env ./do install ./do compile:all --env production diff --git a/.gitignore b/.gitignore index b4bf0030a2..80b10dd2a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ .DS_Store TODO -composer.phar /vendor /vendor-prefixed /vendor_backup diff --git a/README.md b/README.md index 7a7716b674..9b39adb077 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,6 @@ $ cd mailpoet # create the .env file $ cp .env.sample .env # change the values on .env file -# download composer -$ curl -sS https://getcomposer.org/installer | php -$ chmod +x ./composer.phar -# install PHP dependencies -$ ./composer.phar install # install all dependencies (PHP and JS) $ ./do install # compile JS and CSS files diff --git a/RoboFile.php b/RoboFile.php index 9a81c7a532..33eabb232c 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -19,7 +19,7 @@ class RoboFile extends \Robo\Tasks { function install() { return $this->taskExecStack() ->stopOnFail() - ->exec('./composer.phar install') + ->exec('./tools/vendor/composer.phar install') ->exec('npm ci --prefer-offline') ->run(); } @@ -27,7 +27,7 @@ class RoboFile extends \Robo\Tasks { function update() { return $this->taskExecStack() ->stopOnFail() - ->exec('./composer.phar update') + ->exec('./tools/vendor/composer.phar update') ->exec('npm update') ->run(); } @@ -425,7 +425,7 @@ class RoboFile extends \Robo\Tasks { return $this->collectionBuilder() ->taskExec('rm -rf ' . __DIR__ . '/vendor/goaop') ->taskExec('rm -rf ' . __DIR__ . '/vendor/nikic') - ->taskExec('cd ' . __DIR__ . ' && ./composer.phar dump-autoload') + ->taskExec('cd ' . __DIR__ . ' && ./tools/vendor/composer.phar dump-autoload') ->taskExec( 'WP_ROOT="' . getenv('WP_ROOT') . '" ' . 'php -d memory_limit=2G ' . @@ -435,7 +435,7 @@ class RoboFile extends \Robo\Tasks { "$dir/lib" ) ->dir(__DIR__ . '/tasks/phpstan') - ->taskExec('cd ' . __DIR__ . ' && ./composer.phar install') + ->taskExec('cd ' . __DIR__ . ' && ./tools/vendor/composer.phar install') ->run(); } diff --git a/build.sh b/build.sh index 6176a20a59..9db9c58c82 100755 --- a/build.sh +++ b/build.sh @@ -30,7 +30,7 @@ npm ci --prefer-offline # Dependency injection container cache. echo '[BUILD] Building DI Container cache' -./composer.phar install +./tools/vendor/composer.phar install ./do container:dump # Generate Doctrine metadata @@ -53,16 +53,16 @@ fi # Production libraries. echo '[BUILD] Fetching production libraries' mkdir vendor-prefixed -./composer.phar install --no-dev --prefer-dist --optimize-autoloader --no-scripts +./tools/vendor/composer.phar install --no-dev --prefer-dist --optimize-autoloader --no-scripts echo '[BUILD] Fetching prefixed production libraries' -./composer.phar install --prefer-dist --working-dir=./prefixer/ +./tools/vendor/composer.phar install --prefer-dist --working-dir=./prefixer/ # Remove Doctrinne Annotations (no need since generated metadata are packed) # Should be removed before `dump-autoload` to not include the annotations classes on the autoloader. rm -rf vendor-prefixed/doctrine/annotations -./composer.phar dump-autoload +./tools/vendor/composer.phar dump-autoload # Copy release folders. echo '[BUILD] Copying release folders' diff --git a/composer.json b/composer.json index aac8c14b2b..789f1ca625 100644 --- a/composer.json +++ b/composer.json @@ -77,14 +77,14 @@ "post-update-cmd": [ "@fixPHPUnit57CodeCoverageForPHP72", "./prefixer/process.sh", - "./composer.phar dump-autoload", - "./composer.phar --working-dir=tasks/code_sniffer install" + "./tools/vendor/composer.phar dump-autoload", + "./tools/vendor/composer.phar --working-dir=tasks/code_sniffer install" ], "post-install-cmd": [ "@fixPHPUnit57CodeCoverageForPHP72", "./prefixer/process.sh", - "./composer.phar dump-autoload", - "./composer.phar --working-dir=tasks/code_sniffer install" + "./tools/vendor/composer.phar dump-autoload", + "./tools/vendor/composer.phar --working-dir=tasks/code_sniffer install" ], "fixPHPUnit57CodeCoverageForPHP72": "sed -i -- 's/\\$numTests = count(\\$coverageData\\[\\$i\\]);/$numTests = (is_array($coverageData[$i]) ? count($coverageData[$i]) : 0);/g' vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php" }, diff --git a/do b/do deleted file mode 120000 index 49d12c4799..0000000000 --- a/do +++ /dev/null @@ -1 +0,0 @@ -vendor/bin/robo \ No newline at end of file diff --git a/do b/do new file mode 100755 index 0000000000..46b3bc7ef4 --- /dev/null +++ b/do @@ -0,0 +1,13 @@ +#!/bin/sh + +DIR=$(dirname $0) +ROBO=$DIR/vendor/bin/robo + +# Robo executable not found, install dev tools (including Composer) and PHP packages (including Robo) +if [ ! -f $ROBO ]; then + COMPOSER_DEV_MODE=1 php tools/install.php + ./tools/vendor/composer.phar install +fi + +# pass command to Robo +$ROBO "$@" diff --git a/prefixer/process.sh b/prefixer/process.sh index bc3cce4442..efe8392041 100755 --- a/prefixer/process.sh +++ b/prefixer/process.sh @@ -1,11 +1,12 @@ #!/usr/bin/env bash BASEDIR=$(dirname "$0") -DRY_RUN_CHECK=$($BASEDIR/../composer.phar install --working-dir=$BASEDIR --dry-run 2>&1 | grep 'Nothing to install or update') +COMPOSER_BIN=$BASEDIR/../tools/vendor/composer.phar +DRY_RUN_CHECK=$($COMPOSER_BIN install --working-dir=$BASEDIR --dry-run 2>&1 | grep 'Nothing to install or update') if [[ $DRY_RUN_CHECK != "Nothing to install or update" ]]; then rm -rf $BASEDIR/build fi if [[ ! -e $BASEDIR/build || -z $(ls -A $BASEDIR/../vendor-prefixed) ]]; then - $BASEDIR/../composer.phar install --working-dir=$BASEDIR + $COMPOSER_BIN install --working-dir=$BASEDIR fi diff --git a/tests/docker/codeception/docker-entrypoint.sh b/tests/docker/codeception/docker-entrypoint.sh index 6d6ebd96e5..94046547df 100755 --- a/tests/docker/codeception/docker-entrypoint.sh +++ b/tests/docker/codeception/docker-entrypoint.sh @@ -68,8 +68,8 @@ sed -i "s/define( *'WP_DEBUG', false *);/$CONFIG/" ./wp-config.php # Example: docker-compose run -e SKIP_DEPS=1 codeception ... if [[ -z "${SKIP_DEPS}" ]]; then cd /project - php composer.phar install - cd /wp-core + ./tools/vendor/composer.phar install + cd - >/dev/null fi # activate MailPoet diff --git a/tools/install.php b/tools/install.php index f4643d4412..72d742b947 100644 --- a/tools/install.php +++ b/tools/install.php @@ -1,6 +1,7 @@ 'composer.phar', 'https://github.com/humbug/php-scoper/releases/download/0.11.4/php-scoper.phar' => 'php-scoper.phar', 'https://github.com/phpstan/phpstan/releases/download/0.11.5/phpstan.phar' => 'phpstan.phar', 'https://github.com/nette/tracy/releases/download/v2.6.4/tracy.phar' => 'tracy.phar',