uninstall.sh 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env bash
  2. set -eo pipefail
  3. ARGS_REMOVE_BACKUPS=0
  4. declare -r XDG_DATA_HOME="${XDG_DATA_HOME:-"$HOME/.local/share"}"
  5. declare -r XDG_CACHE_HOME="${XDG_CACHE_HOME:-"$HOME/.cache"}"
  6. declare -r XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"$HOME/.config"}"
  7. declare -r LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-"$XDG_DATA_HOME/lunarvim"}"
  8. declare -r LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"$XDG_CONFIG_HOME/lvim"}"
  9. declare -r LUNARVIM_CACHE_DIR="${LUNARVIM_CACHE_DIR:-"$XDG_CACHE_HOME/lvim"}"
  10. declare -a __lvim_dirs=(
  11. "$LUNARVIM_CONFIG_DIR"
  12. "$LUNARVIM_RUNTIME_DIR"
  13. "$LUNARVIM_CACHE_DIR"
  14. )
  15. function usage() {
  16. echo "Usage: uninstall.sh [<options>]"
  17. echo ""
  18. echo "Options:"
  19. echo " -h, --help Print this help message"
  20. echo " --remove-backups Remove old backup folders as well"
  21. }
  22. function parse_arguments() {
  23. while [ "$#" -gt 0 ]; do
  24. case "$1" in
  25. --remove-backups)
  26. ARGS_REMOVE_BACKUPS=1
  27. ;;
  28. -h | --help)
  29. usage
  30. exit 0
  31. ;;
  32. esac
  33. shift
  34. done
  35. }
  36. function remove_lvim_dirs() {
  37. for dir in "${__lvim_dirs[@]}"; do
  38. rm -rf "$dir"
  39. if [ "$ARGS_REMOVE_BACKUPS" -eq 1 ]; then
  40. rm -rf "$dir.{bak,old}"
  41. fi
  42. done
  43. }
  44. function remove_lvim_bin() {
  45. local legacy_bin="/usr/local/bin/lvim "
  46. if [ -x "$legacy_bin" ]; then
  47. echo "Error! Unable to remove $legacy_bin without elevation. Please remove manually."
  48. exit 1
  49. fi
  50. lvim_bin="$(command -v lvim 2>/dev/null)"
  51. rm -f "$lvim_bin"
  52. }
  53. function remove_desktop_file() {
  54. OS="$(uname -s)"
  55. # TODO: Any other OSes that use desktop files?
  56. [ "$OS" != "Linux" ] && return
  57. echo "Removing desktop file..."
  58. find "$XDG_DATA_HOME/icons/hicolor" -name "lvim.svg" -type f -delete
  59. rm "$XDG_DATA_HOME/applications/lvim.desktop"
  60. }
  61. function main() {
  62. parse_arguments "$@"
  63. echo "Removing LunarVim binary..."
  64. remove_lvim_bin
  65. echo "Removing LunarVim directories..."
  66. remove_lvim_dirs
  67. remove_desktop_file
  68. echo "Uninstalled LunarVim!"
  69. }
  70. main "$@"