diff --git a/script/upgrade_bundler.sh b/script/upgrade_bundler.sh new file mode 100755 index 0000000000..3d62cd3c82 --- /dev/null +++ b/script/upgrade_bundler.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +# This shell script looks for the last used Bundler version in Gemfile.lock and +# installs exactly that version, removing other versions. + +# Fail if a single command fails. +set -e + +# `grep -m 1`: find the first occurrence of "BUNDLED WITH" +# `-A`: print the next line after "BUNDLED WITH" as well +# `-x -F`: find exactly that string without interpreting regex +# `tail -n 1`: take the last line, the version line +# `tr -d`: delete all spaces, the indent before the version +version="$(grep -m 1 -A 1 -x -F "BUNDLED WITH" Gemfile.lock | tail -n 1 | tr -d '[:space:]')" + +if [ -z "$version" ]; then + echo "No bundler version in Gemfile.lock." + exit 1 +fi + +current="$(bundler --version)" + +if [ "$current" = "Bundler version $version" ]; then + echo "Already up-to-date: $current" + exit 0 +fi + +gem install bundler -v "$version" +gem cleanup bundler