Added Node packages script

Necessary to provide a single source of truth for installing Node
dependencies. This used to be managed by the Yarn Setup project but
that project is being deprecated in favor of this project.
This commit is contained in:
Brooke Kuhlmann
2021-03-15 20:13:48 -06:00
parent b8d96b3479
commit 6990b9d2c6
5 changed files with 49 additions and 0 deletions

17
bin/install_node_packages Executable file
View File

@@ -0,0 +1,17 @@
#! /usr/bin/env bash
# Installs Node packages.
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_node_packages"
if [[ -x "$SCRIPT_PATH" ]]; then
check_yarn_install
"$SCRIPT_PATH"
else
printf "WARNING: Node packages install script does not exist or is not executable.\n"
fi

View File

@@ -39,6 +39,7 @@ while true; do
printf " m: Install Mac App Store software.\n" printf " m: Install Mac App Store software.\n"
printf " a: Install application software.\n" printf " a: Install application software.\n"
printf " x: Install application software extensions.\n" printf " x: Install application software extensions.\n"
printf " np: Install Node packages.\n"
printf " rg: Install Ruby gems.\n" printf " rg: Install Ruby gems.\n"
printf " rc: Install Rust crates.\n" printf " rc: Install Rust crates.\n"
printf " d: Apply default settings.\n" printf " d: Apply default settings.\n"

View File

@@ -22,6 +22,8 @@ process_option() {
bin/install_applications;; bin/install_applications;;
'x') 'x')
bin/install_extensions;; bin/install_extensions;;
'np')
bin/install_node_packages;;
'rg') 'rg')
bin/install_ruby_gems;; bin/install_ruby_gems;;
'rc') 'rc')
@@ -39,6 +41,7 @@ process_option() {
bin/install_app_store bin/install_app_store
bin/install_applications bin/install_applications
bin/install_extensions bin/install_extensions
bin/install_node_packages
bin/install_ruby_gems bin/install_ruby_gems
bin/install_rust_crates bin/install_rust_crates
bin/apply_default_settings bin/apply_default_settings
@@ -53,6 +56,7 @@ process_option() {
verify_app_store_applications verify_app_store_applications
verify_applications verify_applications
verify_extensions verify_extensions
verify_node_packages
verify_ruby_gems verify_ruby_gems
verify_rust_crates;; verify_rust_crates;;
'C') 'C')

View File

@@ -101,6 +101,16 @@ get_install_root() {
} }
export -f get_install_root export -f get_install_root
# Checks Yarn has been installed and exits if otherwise.
# Parameters: None.
check_yarn_install() {
if ! command -v yarn > /dev/null; then
printf "%s\n" "ERROR: Yarn can't be found. Please ensure Homebrew and Yarn have been installed."
exit 1
fi
}
export -f check_yarn_install
# Checks Mac App Store (mas) CLI has been installed and exits if otherwise. # Checks Mac App Store (mas) CLI has been installed and exits if otherwise.
# Parameters: None. # Parameters: None.
check_mas_install() { check_mas_install() {

View File

@@ -127,6 +127,23 @@ verify_path() {
} }
export -f verify_path export -f verify_path
# Checks for missing Node packages.
verify_node_packages() {
local packages=$(yarn global list --json | grep '"type":"info"')
printf "\nChecking Node packages...\n"
while read line; do
if [[ "$line" == "yarn global add"* ]]; then
local package=$(printf "$line" | awk '{print $4}')
verify_listed_application "$package" "${packages[*]}"
fi
done < "$MAC_OS_CONFIG_PATH/bin/install_node_packages"
printf "Node packages check complete.\n"
}
export -f verify_node_packages
# Checks for missing Ruby gems. # Checks for missing Ruby gems.
verify_ruby_gems() { verify_ruby_gems() {
local gems="$(gem list --no-versions)" local gems="$(gem list --no-versions)"