173 lines
4.1 KiB
Bash
Executable File
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
|