uninstall.sh 2.3 KB

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