Files
mybash/uninstall.sh

156 lines
4.5 KiB
Bash
Executable File

#!/bin/sh -e
# Define color codes using tput for better compatibility
RC=$(tput sgr0)
RED=$(tput setaf 1)
YELLOW=$(tput setaf 3)
GREEN=$(tput setaf 2)
LINUXTOOLBOXDIR="$HOME/linuxtoolbox"
PACKAGER=""
SUDO_CMD=""
print_colored() {
color=$1
message=$2
printf "${color}%s${RC}\n" "$message"
}
command_exists() {
command -v "$1" >/dev/null 2>&1
}
determine_package_manager() {
PACKAGEMANAGER='nala apt dnf yum pacman zypper emerge xbps-install nix-env'
for pgm in $PACKAGEMANAGER; do
if command_exists "$pgm"; then
PACKAGER="$pgm"
printf "Using %s\n" "$pgm"
break
fi
done
if [ -z "$PACKAGER" ]; then
print_colored "$RED" "Can't find a supported package manager"
exit 1
fi
}
determine_sudo_command() {
if command_exists sudo; then
SUDO_CMD="sudo"
elif command_exists doas && [ -f "/etc/doas.conf" ]; then
SUDO_CMD="doas"
else
SUDO_CMD="su -c"
fi
printf "Using %s as privilege escalation software\n" "$SUDO_CMD"
}
uninstall_dependencies() {
DEPENDENCIES='bash-completion bat tree multitail fastfetch neovim trash-cli'
print_colored "$YELLOW" "Uninstalling dependencies..."
if [ "$PACKAGER" = "pacman" ]; then
if command_exists yay; then
yay -Rns --noconfirm ${DEPENDENCIES}
elif command_exists paru; then
paru -Rns --noconfirm ${DEPENDENCIES}
else
${SUDO_CMD} pacman -Rns --noconfirm ${DEPENDENCIES}
fi
elif [ "$PACKAGER" = "nala" ] || [ "$PACKAGER" = "apt" ]; then
${SUDO_CMD} ${PACKAGER} purge -y ${DEPENDENCIES}
elif [ "$PACKAGER" = "emerge" ]; then
${SUDO_CMD} ${PACKAGER} --deselect app-shells/bash-completion sys-apps/bat app-text/tree app-text/multitail app-misc/fastfetch app-editors/neovim app-misc/trash-cli
elif [ "$PACKAGER" = "xbps-install" ]; then
${SUDO_CMD} xbps-remove -Ry ${DEPENDENCIES}
elif [ "$PACKAGER" = "nix-env" ]; then
${SUDO_CMD} ${PACKAGER} -e bash-completion bat tree multitail fastfetch neovim trash-cli
elif [ "$PACKAGER" = "dnf" ] || [ "$PACKAGER" = "yum" ]; then
${SUDO_CMD} ${PACKAGER} remove -y ${DEPENDENCIES}
else
${SUDO_CMD} ${PACKAGER} remove -y ${DEPENDENCIES}
fi
}
uninstall_font() {
FONT_NAME="MesloLGS Nerd Font Mono"
FONT_DIR="$HOME/.local/share/fonts/$FONT_NAME"
if [ -d "$FONT_DIR" ]; then
print_colored "$YELLOW" "Removing font: $FONT_NAME"
rm -rf "$FONT_DIR"
fc-cache -fv
print_colored "$GREEN" "Font removed: $FONT_NAME"
else
print_colored "$YELLOW" "Font not found: $FONT_NAME"
fi
}
uninstall_starship_and_fzf() {
if command_exists starship; then
print_colored "$YELLOW" "Uninstalling Starship..."
${SUDO_CMD} rm -f "$(command -v starship)"
print_colored "$GREEN" "Starship uninstalled"
fi
if [ -d "$HOME/.fzf" ]; then
print_colored "$YELLOW" "Uninstalling fzf..."
"$HOME/.fzf/uninstall"
rm -rf "$HOME/.fzf"
print_colored "$GREEN" "fzf uninstalled"
fi
}
uninstall_zoxide() {
if command_exists zoxide; then
print_colored "$YELLOW" "Uninstalling Zoxide..."
${SUDO_CMD} rm -f "$(command -v zoxide)"
print_colored "$GREEN" "Zoxide uninstalled"
fi
}
remove_configs() {
USER_HOME=$(getent passwd "${SUDO_USER:-$USER}" | cut -d: -f6)
print_colored "$YELLOW" "Removing configuration files..."
# Remove .bashrc symlink and restore backup if it exists
if [ -L "$USER_HOME/.bashrc" ]; then
rm "$USER_HOME/.bashrc"
if [ -f "$USER_HOME/.bashrc.bak" ]; then
mv "$USER_HOME/.bashrc.bak" "$USER_HOME/.bashrc"
print_colored "$GREEN" "Restored original .bashrc"
fi
fi
# Remove starship config
rm -f "$USER_HOME/.config/starship.toml"
# Remove fastfetch config
rm -f "$USER_HOME/.config/fastfetch/config.jsonc"
print_colored "$GREEN" "Configuration files removed"
}
remove_linuxtoolbox() {
if [ -d "$LINUXTOOLBOXDIR" ]; then
print_colored "$YELLOW" "Removing linuxtoolbox directory..."
rm -rf "$LINUXTOOLBOXDIR"
print_colored "$GREEN" "linuxtoolbox directory removed"
fi
}
# Main execution
determine_package_manager
determine_sudo_command
uninstall_dependencies
uninstall_font
uninstall_starship_and_fzf
uninstall_zoxide
remove_configs
remove_linuxtoolbox
print_colored "$GREEN" "Uninstallation complete. Please restart your shell for changes to take effect."