Files
Modular-Bashrc-Manager/installer/brc-script-install.sh

173 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
clear
current_user="$(whoami)"
selected_user=""
pause() {
read -rp "Press Enter to continue..."
}
select_user() {
while true; do
echo "----------------------------"
echo "Available users:"
echo "----------------------------"
grep -E ':/home/' /etc/passwd | cut -d: -f1
echo "q = exit"
echo "----------------------------"
read -rp "Type the user: " choice
if [[ "$choice" == "q" ]]; then
echo "Exiting..."
exit 1
elif [[ -d "/home/$choice" ]]; then
read -rp "Confirm user '$choice'? (y/N): " confirm
if [[ "$confirm" == "y" ]]; then
selected_user="$choice"
return
fi
else
echo "User '$choice' not valid!"
pause
fi
done
}
# ========================
# USER SELECTION
# ========================
while true; do
echo "### brc-script installer ###"
echo "---------------------------------------------"
echo "Install for current user ($current_user)?"
echo "---------------------------------------------"
echo " y - yes"
echo " n - choose another user"
echo " q - exit"
echo " default - yes"
echo "---------------------------------------------"
read -rp "Choice: " choice
case "$choice" in
n)
select_user
break
;;
q)
echo "Exiting..."
exit 1
;;
*)
read -rp "Confirm current user '$current_user'? (y/N): " confirm
if [[ "$confirm" == "y" ]]; then
selected_user="$current_user"
break
fi
;;
esac
clear
done
# ========================
# VARIABLES
# ========================
home="/home/$selected_user"
bashrc="$home/.bashrc"
mainfolder="$home/.bashrc.d"
neededfolder="$mainfolder/scripts-needed"
availablefolder="$mainfolder/scripts-available"
enabledfolder="$mainfolder/scripts-enabled"
removedfolder="$mainfolder/scripts-removed"
script_dir="$(cd "$(dirname "$0")" && pwd)"
# ========================
# CREATE DIRECTORIES
# ========================
echo "[ Creating folders... ]"
mkdir -p "$neededfolder"
mkdir -p "$availablefolder"
mkdir -p "$enabledfolder"
mkdir -p "$removedfolder"
# ========================
# BACKUP .bashrc
# ========================
if [[ -f "$bashrc" ]]; then
cp "$bashrc" "$home/bashrc-backup-$(date +%F)"
echo "[ Backup created ]"
else
echo "[ WARNING: .bashrc not found, creating a new one ]"
touch "$bashrc"
fi
# ========================
# MODIFY .bashrc
# ========================
if [[ -f "$script_dir/NEEDED-FOR-INSTALLER" ]]; then
cat "$script_dir/NEEDED-FOR-INSTALLER" >> "$bashrc"
echo "[ Updated .bashrc ]"
else
echo "[ ERROR: NEEDED-FOR-INSTALLER missing ]"
fi
# ========================
# COPY MAIN STRUCTURE
# ========================
cp -r "$script_dir/../." "$mainfolder"
echo "[ Main folder installed ]"
# ========================
# COPY DEFAULT SCRIPTS
# ========================
echo "[ Installing default scripts... ]"
default_scripts=(
"00_default.sh"
"01_git-cli-highlitgh.sh"
"02_bashboard.sh"
)
for script in "${default_scripts[@]}"; do
if [[ -f "$script_dir/$script" ]]; then
cp "$script_dir/$script" "$availablefolder/"
echo " -> Copied $script"
else
echo " -> WARNING: $script not found"
fi
done
# ========================
# APPLY CHANGES
# ========================
# shellcheck disable=SC1090
source "$bashrc"
echo "[ Bashrc reloaded ]"
# ========================
# FINAL MESSAGE
# ========================
clear
echo "##################################"
echo " Installation Done "
echo "##################################"
echo ""
echo "Scripts available in:"
echo " $availablefolder"
echo ""
echo "Use commands:"
echo " brc-script -> manage scripts"
echo " refresh-brc -> reload config"
echo ""
echo "##################################"
echo " Thanks for using this script! "
echo "##################################"
pause