diff --git a/docs/recipe/deploy/vendors.md b/docs/recipe/deploy/vendors.md index 6b1529940..5905f5aa4 100644 --- a/docs/recipe/deploy/vendors.md +++ b/docs/recipe/deploy/vendors.md @@ -23,7 +23,7 @@ require 'recipe/deploy/vendors.php'; ### composer_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L7) +[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L6) @@ -32,12 +32,20 @@ require 'recipe/deploy/vendors.php'; ``` +### composer_version +[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L7) + + + +```php title="Default value" +null +``` + + ### bin/composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L12) +[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L10) -Returns Composer binary path in found. Otherwise try to install latest -composer version to `.dep/composer.phar`. To use specific composer version -download desired phar and place it at `.dep/composer.phar`. +Returns Composer binary path if found. Otherwise, tries to install composer to `.dep/composer.phar`. :::info Autogenerated The value of this configuration is autogenerated on access. ::: @@ -49,7 +57,7 @@ The value of this configuration is autogenerated on access. ## Tasks ### deploy\:vendors {#deploy-vendors} -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L28) +[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L32) Installs vendors. diff --git a/recipe/deploy/vendors.php b/recipe/deploy/vendors.php index 0fbef458f..e42cb8162 100644 --- a/recipe/deploy/vendors.php +++ b/recipe/deploy/vendors.php @@ -3,23 +3,27 @@ namespace Deployer; set('composer_action', 'install'); - set('composer_options', '--verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader'); +set('composer_version', null); -// Returns Composer binary path in found. Otherwise try to install latest -// composer version to `.dep/composer.phar`. To use specific composer version -// download desired phar and place it at `.dep/composer.phar`. +// Returns Composer binary path if found. Otherwise, tries to install composer to `.dep/composer.phar`. set('bin/composer', function () { if (test('[ -f {{deploy_path}}/.dep/composer.phar ]')) { - return '{{bin/php}} {{deploy_path}}/.dep/composer.phar'; + if (empty(get('composer_version')) || preg_match(parse('/Composer.*{{composer_version}}/'), run('{{bin/php}} {{deploy_path}}/.dep/composer.phar --version'))) { + return '{{bin/php}} {{deploy_path}}/.dep/composer.phar'; + } } if (commandExist('composer')) { - return '{{bin/php}} ' . which('composer'); + if (empty(get('composer_version')) || preg_match(parse('/Composer.*{{composer_version}}/'), run('{{bin/php}} ' . which('composer') . ' --version'))) { + return '{{bin/php}} ' . which('composer'); + } } - warning("Composer binary wasn't found. Installing latest composer to \"{{deploy_path}}/.dep/composer.phar\"."); - run("cd {{deploy_path}} && curl -sS https://getcomposer.org/installer | {{bin/php}}"); + $versionAsName = get('composer_version') ? ' {{composer_version}}' : ''; + $versionAsOption = get('composer_version') ? ' -- --version={{composer_version}}' : ''; + warning("Composer{$versionAsName} wasn't found. Installing to \"{{deploy_path}}/.dep/composer.phar\"."); + run("cd {{deploy_path}} && curl -sS https://getcomposer.org/installer | {{bin/php}}{$versionAsOption}"); run('mv {{deploy_path}}/composer.phar {{deploy_path}}/.dep/composer.phar'); return '{{bin/php}} {{deploy_path}}/.dep/composer.phar'; });