Added Rust crates script

Necessary to implement the installation of Rust and associated crates
which can be used by downstream configurations. This functionality was
originally part of the macOS Configuration project but has been moved
here to provide a common foundation in which to build upon.
This commit is contained in:
Brooke Kuhlmann
2021-03-14 10:35:58 -06:00
parent eec175e232
commit 35663cf8b3
5 changed files with 49 additions and 1 deletions

17
bin/install_rust_crates Executable file
View File

@@ -0,0 +1,17 @@
#! /usr/bin/env bash
# Installs Rust crates.
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_rust_crates"
if [[ -x "$SCRIPT_PATH" ]]; then
install_rust
"$SCRIPT_PATH"
else
printf "WARNING: Rust crates 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 " rc: Install Rust crates.\n"
printf " d: Apply default settings.\n" printf " d: Apply default settings.\n"
printf " s: Setup installed software.\n" printf " s: Setup installed software.\n"
printf " i: Install everything (i.e. executes all install options).\n" printf " i: Install everything (i.e. executes all install options).\n"

View File

@@ -171,6 +171,15 @@ install_program() {
} }
export -f install_program export -f install_program
# Installs Rust.
# Parameters: None.
install_rust() {
if ! command -v cargo > /dev/null; then
curl --proto "=https" --tlsv1.2 --fail --silent --show-error https://sh.rustup.rs | sh
fi
}
export -f install_rust
# Installs an application via a tar file. # Installs an application via a tar file.
# Parameters: $1 (required) - URL, $2 (required) - Application name, $3 (required) - Decompress options. # Parameters: $1 (required) - URL, $2 (required) - Application name, $3 (required) - Decompress options.
install_tar_app() { install_tar_app() {

View File

@@ -22,6 +22,8 @@ process_option() {
bin/install_applications;; bin/install_applications;;
'x') 'x')
bin/install_extensions;; bin/install_extensions;;
'rc')
bin/install_rust_crates;;
'd') 'd')
bin/apply_default_settings;; bin/apply_default_settings;;
's') 's')
@@ -35,6 +37,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_rust_crates
bin/apply_default_settings bin/apply_default_settings
bin/setup_software bin/setup_software
clean_work_path;; clean_work_path;;
@@ -46,7 +49,8 @@ process_option() {
verify_homebrew_casks verify_homebrew_casks
verify_app_store_applications verify_app_store_applications
verify_applications verify_applications
verify_extensions;; verify_extensions
verify_rust_crates;;
'C') 'C')
caffeinate_machine;; caffeinate_machine;;
'ua') 'ua')

View File

@@ -126,3 +126,20 @@ verify_path() {
fi fi
} }
export -f verify_path export -f verify_path
# Checks for missing Rust crates.
verify_rust_crates() {
printf "\nChecking Rust crates...\n"
local crates="$(ls -A1 $HOME/.cargo/bin)"
while read line; do
if [[ "$line" == "cargo install"* ]]; then
local crate=$(printf "$line" | awk '{print $3}')
verify_listed_application "$crate" "${crates[*]}"
fi
done < "$MAC_OS_CONFIG_PATH/bin/install_rust_crates"
printf "Rust crates check complete.\n"
}
export -f verify_rust_crates