diff --git a/bin/install_ruby_gems b/bin/install_ruby_gems new file mode 100755 index 0000000..d31451b --- /dev/null +++ b/bin/install_ruby_gems @@ -0,0 +1,17 @@ +#! /usr/bin/env bash + +# Installs Ruby gems. + +set -o nounset +set -o errexit +set -o pipefail +IFS=$'\n\t' + +SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_ruby_gems" + +if [[ -x "$SCRIPT_PATH" ]]; then + install_ruby + "$SCRIPT_PATH" +else + printf "WARNING: Ruby gems install script does not exist or is not executable.\n" +fi diff --git a/bin/run b/bin/run index a11e2ff..074a14a 100755 --- a/bin/run +++ b/bin/run @@ -39,6 +39,7 @@ while true; do printf " m: Install Mac App Store software.\n" printf " a: Install application software.\n" printf " x: Install application software extensions.\n" + printf " rg: Install Ruby gems.\n" printf " rc: Install Rust crates.\n" printf " d: Apply default settings.\n" printf " s: Setup installed software.\n" diff --git a/lib/installers.sh b/lib/installers.sh index 048e241..2b0ecd6 100644 --- a/lib/installers.sh +++ b/lib/installers.sh @@ -188,6 +188,19 @@ install_program() { } export -f install_program +# Installs Ruby. +# Parameters: None. +install_ruby() { + local version="$(cat $HOME/.ruby-version | tr -d '\n')" + + if [[ ! -x "$(command -v ruby)" && -n $(ruby --version | grep --quiet "$version") ]]; then + $(get_homebrew_bin_root)/ruby-install "ruby-$version" + chruby "$version" + gem update --system && gem update + fi +} +export -f install_ruby + # Installs Rust. # Parameters: None. install_rust() { diff --git a/lib/options.sh b/lib/options.sh index bc6c073..37062ca 100644 --- a/lib/options.sh +++ b/lib/options.sh @@ -22,6 +22,8 @@ process_option() { bin/install_applications;; 'x') bin/install_extensions;; + 'rg') + bin/install_ruby_gems;; 'rc') bin/install_rust_crates;; 'd') @@ -37,6 +39,7 @@ process_option() { bin/install_app_store bin/install_applications bin/install_extensions + bin/install_ruby_gems bin/install_rust_crates bin/apply_default_settings bin/setup_software @@ -50,6 +53,7 @@ process_option() { verify_app_store_applications verify_applications verify_extensions + verify_ruby_gems verify_rust_crates;; 'C') caffeinate_machine;; diff --git a/lib/verifiers.sh b/lib/verifiers.sh index 45dcd5b..687ac3a 100644 --- a/lib/verifiers.sh +++ b/lib/verifiers.sh @@ -127,6 +127,23 @@ verify_path() { } export -f verify_path +# Checks for missing Ruby gems. +verify_ruby_gems() { + local gems="$(gem list --no-versions)" + + printf "\nChecking Ruby gems...\n" + + while read line; do + if [[ "$line" == "gem install"* ]]; then + local gem=$(printf "$line" | awk '{print $3}') + verify_listed_application "$gem" "${gems[*]}" + fi + done < "$MAC_OS_CONFIG_PATH/bin/install_ruby_gems" + + printf "Ruby gems check complete.\n" +} +export -f verify_ruby_gems + # Checks for missing Rust crates. verify_rust_crates() { printf "\nChecking Rust crates...\n"