#!/bin/bash # # This script is called automatically on every `composer update`. # See "post-update-cmd" in the "scripts" section of composer.json. # # This script will create a derived composer.json / composer.lock # pair for every test scenario. Test scenarios are defined in the # "scenarios" file, which should be customized to suit the needs # of the project. # SELF_DIRNAME="`dirname -- "$0"`" source ${SELF_DIRNAME}/scenarios echo echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" echo "::" echo ":: Update dependencies for the following scenarios:" echo "::" echo ":: ${SCENARIOS}" echo "::" echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" echo set -ex for SCENARIO in ${SCENARIOS} ; do dir=dependencies/${SCENARIO} # Define indirect variable names stability_variable="stability_${SCENARIO}" requirement_variable="requirement_${SCENARIO}" platform_php_variable="platform_php_${SCENARIO}" echo "### Create $dir/composer.json for ${SCENARIO} scenario" mkdir -p $dir cp composer.json $dir # Then set our own platform php version if applicable (otherwise unset it) composer -n --working-dir=$dir config platform.php "${!platform_php_variable---unset}" # Temporarily set our vendor directory to 'vendor' composer -n --working-dir=$dir config vendor-dir vendor # Set an appropriate minimum stability for this version of Symfony composer -n --working-dir=$dir config minimum-stability "${!stability_variable-stable}" # Add a constraint to limit the Symfony version composer -n --working-dir=$dir require --dev --no-update "${!requirement_variable}" # Create the composer.lock file. Ignore the vendor directory created. composer -n --working-dir=$dir update --no-scripts # Set the vendor directory to its final desired location. composer -n --working-dir=$dir config vendor-dir '../../vendor' # The 'autoload' section specifies directory paths that are relative # to the composer.json file. We will drop in some symlinks so that # these paths will resolve as if the composer.json were in the root. for target in $AUTOLOAD_DIRECTORIES ; do ln -s -f ../../$target $dir done done