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.
53 lines
1.5 KiB
53 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
|
|
|