#!/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

Add script to upgrade bundler to Gemfile version
Add script to upgrade bundler to Gemfile version

Useful to sync your bundler version or the CI bundler version with the
rest of the team.
