2025-07-08 21:57:02 -04:00

51 lines
1.2 KiB
Bash

# Helper functions
show_spinner() {
local pid=$1
local delay=0.1
local spinstr='|/-\'
local i=0
while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
# Get the current character for the spinner
printf "\b%c" "${spinstr:i++%${#spinstr}:1}"
sleep $delay
done
# Clear the spinner once the process is complete
printf "\b \b \n"
}
is_installed() {
local package="$1"
if command -v "$package" >/dev/null 2>&1; then
return 0 # success
else
return 1 # failure
fi
}
install() {
for package in $1; do
# Check if app is installed
if command -v $package >/dev/null 2>&1; then
info "$package is already installed"
continue
fi
info "Installing $package"
# Start apt in the background, suppressing all output and errors
sudo apt install -y $package >/dev/null 2>&1 &
# Capture the PID of curl
local aptPid=$!
# Show the spinner while apt is running
show_spinner $aptPid
# Wait for curl to complete
wait $aptPid
done
# Check if the download was successful
success "Done"
}