--- /dev/null
+#!/bin/bash
+
+SCENARIO=$1
+DEPENDENCIES=${2-install}
+
+# Convert the aliases 'highest', 'lowest' and 'lock' to
+# the corresponding composer command to run.
+case $DEPENDENCIES in
+ highest)
+ DEPENDENCIES=update
+ ;;
+ lowest)
+ DEPENDENCIES='update --prefer-lowest'
+ ;;
+ lock|default|"")
+ DEPENDENCIES=install
+ ;;
+esac
+
+original_name=scenarios
+recommended_name=".scenarios.lock"
+
+base="$original_name"
+if [ -d "$recommended_name" ] ; then
+ base="$recommended_name"
+fi
+
+# If scenario is not specified, install the lockfile at
+# the root of the project.
+dir="$base/${SCENARIO}"
+if [ -z "$SCENARIO" ] || [ "$SCENARIO" == "default" ] ; then
+ SCENARIO=default
+ dir=.
+fi
+
+# Test to make sure that the selected scenario exists.
+if [ ! -d "$dir" ] ; then
+ echo "Requested scenario '${SCENARIO}' does not exist."
+ exit 1
+fi
+
+echo
+echo "::"
+echo ":: Switch to ${SCENARIO} scenario"
+echo "::"
+echo
+
+set -ex
+
+composer -n validate --working-dir=$dir --no-check-all --ansi
+composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+composer -n --working-dir=$dir info