aesthetic terminal experience
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.5 KiB

#!/bin/bash
# Font decoration for better a e s t h e t i c
RED="\e[0;31m"
GREEN="\e[0;32m"
BLUE="\e[0;34m"
BOLD="\e[1m"
ULINE="\e[4m"
RESET="\e[0m"
# Make sure that ctrl+C actually exits the script
trap "exit" INT
# Give informative error messages
trap 'echo -e "${RED}Oops!${RESET} Something went wrong on line $LINENO of this script. Exit code was $?" >&2' ERR
# --------------- Functions ---------------
# Coding Moment: generally, whenever you see something with brackets at the end of it, like this()
# or like(this), it's a function! It takes inputs and gives (or does) something as an output
install_if_needed() {
for package in "$@"
do
# TODO Better installation detection than "which"
if [ -z $(which $package 2>/dev/null) ]; then
echo "installing" $package
case $DISTRO in
"debian")
sudo apt install -y $package
;;
"arch")
sudo pacman -S $package --noconfirm --needed
;;
"fedora")
sudo dnf install -y $package
;;
"mac")
brew install $package
;;
esac
else
echo $package 'already installed!'
fi
done
}
# --------------- Environment Setup ---------------
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
else
echo "No .env file, this might cause some issues..."
fi