|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +_stage_prepare_old_install() { |
| 4 | + local docroot |
| 5 | + docroot=$(get_distribution_docroot false) |
| 6 | + export COMPOSER_ROOT_VERSION=${DRUPAL_TESTING_UPGRADE_COMPOSER_PROJECT_VERSION} |
| 7 | + |
| 8 | + # When we test a full project, all we need is the project files itself. |
| 9 | + if [[ ${DRUPAL_TESTING_PROJECT_TYPE} != "drupal-profile" ]]; then |
| 10 | + printf "prepare_upgrade is only useful for profiles\n" |
| 11 | + exit 1 |
| 12 | + fi |
| 13 | + |
| 14 | + # Checkout the profile and get the version we want to upgrade from. |
| 15 | + mkdir -p ${DRUPAL_TESTING_UPGRADE_DRUPAL_INSTALLATION_DIRECTORY} |
| 16 | + cp -R ${DRUPAL_TESTING_WORKSPACE}/. ${DRUPAL_TESTING_UPGRADE_DRUPAL_INSTALLATION_DIRECTORY} |
| 17 | + git -C ${DRUPAL_TESTING_UPGRADE_DRUPAL_INSTALLATION_DIRECTORY} fetch |
| 18 | + git -C ${DRUPAL_TESTING_UPGRADE_DRUPAL_INSTALLATION_DIRECTORY} checkout ${DRUPAL_TESTING_UPGRADE_VERSION} |
| 19 | + |
| 20 | + printf "Prepare composer.json\n\n" |
| 21 | + |
| 22 | + # Build is based on drupal project |
| 23 | + composer create-project "${DRUPAL_TESTING_COMPOSER_PROJECT}":"${DRUPAL_TESTING_UPGRADE_COMPOSER_PROJECT_VERSION}" "${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" --no-interaction --no-install |
| 24 | + |
| 25 | + composer config "minimum-stability" dev --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 26 | + composer config "prefer-stable" true --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 27 | + |
| 28 | + # Reorder repositories, to make sure, local path is first. |
| 29 | + composer config repositories.0 path "${DRUPAL_TESTING_UPGRADE_DRUPAL_INSTALLATION_DIRECTORY}" --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 30 | + |
| 31 | + jq '.repositories[0].options = {}' "${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}""/composer.json" | awk 'BEGIN{RS="";getline<"-";print>ARGV[1]}' "${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}""/composer.json" |
| 32 | + jq '.repositories[0].options.symlink = false' "${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}""/composer.json" | awk 'BEGIN{RS="";getline<"-";print>ARGV[1]}' "${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}""/composer.json" |
| 33 | + |
| 34 | + composer config repositories.1 composer https://asset-packagist.org --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 35 | + composer config repositories.2 composer https://packages.drupal.org/8 --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 36 | + |
| 37 | + # Enable patching |
| 38 | + composer require cweagans/composer-patches --no-update --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 39 | + composer config extra.enable-patching true --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 40 | + |
| 41 | + composer require drush/drush:${DRUPAL_TESTING_UPGRADE_DRUSH_VERSION} --prefer-lowest --no-update --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 42 | + |
| 43 | + # Allow required plugins |
| 44 | + composer config allow-plugins.cweagans/composer-patches true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 45 | + composer config allow-plugins.drupal/core-composer-scaffold true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 46 | + composer config allow-plugins.drupal/core-project-message true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 47 | + composer config allow-plugins.composer/installers true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 48 | + composer config allow-plugins.oomphinc/composer-installers-extender true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 49 | + composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 50 | + composer config allow-plugins.phpstan/extension-installer true --no-plugins --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 51 | + |
| 52 | + # Install the lowest versions of everything. |
| 53 | + composer update --prefer-lowest --working-dir="${DRUPAL_TESTING_DRUPAL_INSTALLATION_DIRECTORY}" |
| 54 | + |
| 55 | + if [[ ! -d ${DRUPAL_TESTING_LOCK_FILES_DIRECTORY} ]]; then |
| 56 | + mkdir -p "${DRUPAL_TESTING_LOCK_FILES_DIRECTORY}" |
| 57 | + fi |
| 58 | + |
| 59 | + # Fake stage completion so that install can run. |
| 60 | + touch "${DRUPAL_TESTING_LOCK_FILES_DIRECTORY}/build" |
| 61 | + touch "${DRUPAL_TESTING_LOCK_FILES_DIRECTORY}/prepare_build" |
| 62 | +} |
0 commit comments