51 lines
2.1 KiB
Bash
Executable File
51 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Since we're uninstalling, avoid depending on any other part of _Bash It_.
|
|
# I.e., hard-code colors (avoid `lib/colors.bash`), &c.
|
|
|
|
: "${BASH_IT:=${HOME?}/.bash_it}"
|
|
|
|
if [[ ! -e ~/.bashrc && ! -e ~/.bash_profile && ! -e ~/.bashrc.bak && ! -e ~/.bash_profile.bak ]]; then
|
|
echo "We can't locate your configuration files, so we can't uninstall..."
|
|
return
|
|
elif grep -F -q -- BASH_IT ~/.bashrc && grep -F -q -- BASH_IT ~/.bash_profile; then
|
|
echo "We can't figure out if Bash-it is loaded from ~/.bashrc or ~/.bash_profile..."
|
|
return
|
|
elif grep -F -q -- BASH_IT ~/.bashrc || [[ -e ~/.bashrc.bak && ! -e ~/.bashrc ]]; then
|
|
CONFIG_FILE=".bashrc"
|
|
elif grep -F -q -- BASH_IT ~/.bash_profile || [[ -e ~/.bash_profile.bak && ! -e ~/.bash_profile ]]; then
|
|
CONFIG_FILE=".bash_profile"
|
|
else
|
|
echo "Bash-it does not appear to be installed."
|
|
return
|
|
fi
|
|
|
|
# possible states:
|
|
# - both .bash* /and/ .bash*.bak, /and/ both config reference `$BASH_IT`: no solution
|
|
# - both config and bak, but only one references `$BASH_IT`: that one
|
|
# - both config, only one bak, but other references `$BASH_IT`: the other one?
|
|
# - both config, no bak, with `$BASH_IT` reference: that one
|
|
# - one config, no bak, but no `$BASH_IT` reference: wut
|
|
# - no config, with bak, with `$BASH_IT`: re-create???
|
|
# - no config, no bak: nothing.
|
|
|
|
BACKUP_FILE=$CONFIG_FILE.bak
|
|
|
|
if [[ ! -e "${HOME?}/$BACKUP_FILE" ]]; then
|
|
printf '\e[0;33m%s\e[0m\n' "Backup file ~/$BACKUP_FILE not found."
|
|
|
|
test -w "${HOME?}/$CONFIG_FILE" \
|
|
&& mv "${HOME?}/$CONFIG_FILE" "${HOME?}/$CONFIG_FILE.uninstall" \
|
|
&& printf '\e[0;32m%s\e[0m\n' "Moved your ~/$CONFIG_FILE to ~/$CONFIG_FILE.uninstall."
|
|
else
|
|
test -w "${HOME?}/$BACKUP_FILE" \
|
|
&& cp -a "${HOME?}/$BACKUP_FILE" "${HOME?}/$CONFIG_FILE" \
|
|
&& rm "${HOME?}/$BACKUP_FILE" \
|
|
&& printf '\e[0;32m%s\e[0m\n' "Your original ~/$CONFIG_FILE has been restored."
|
|
fi
|
|
|
|
printf '\n\e[0;32m%s\e[0m\n\n' "Uninstallation finished successfully! Sorry to see you go!"
|
|
printf '%s\n' "Final steps to complete the uninstallation:"
|
|
printf '\t%s\n' "-> Remove the ${BASH_IT//${HOME?}/\~} folder"
|
|
printf '\t%s\n' "-> Open a new shell/tab/terminal"
|