Files
openfoodnetwork/script/install-bundler
Maikel Linke dafa433788 Add script to install required bundler version
The newest version of bundler is not compatible with our current version
of Ruby. This script helps to install the bundler version defined in
Gemfile.lock.
2019-01-10 17:44:09 +11:00

43 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# This shell script looks for the last used Bundler version in Gemfile.lock and
# installs exactly that version, removing all other versions.
# Command line arguments are passed on to `gem install`. So you can call this
# script with with arguments:
#
# ./script/install-bundler --no-ri --no-rdoc
# This script is used by ofn-install and can by handy in your development
# environment.
# 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 the length of $version is zero
if [ -z "$version" ]; then
echo >&2 "No bundler version in Gemfile.lock."
exit 1
fi
# Get the currently used bundler version.
# We ignore all errors with `2>/dev/null || true` in case there is no bundler
# or only an orphaned shim installed.
current="$(bundler --version 2>/dev/null || true)"
if [ "$current" = "Bundler version $version" ]; then
echo >&2 "Already up-to-date: $current"
exit 0
fi
# Passing on all arguments of this script with "$@".
gem install bundler -v "$version" "$@"
gem uninstall bundler -v "!= $version" 2>/dev/null || true