158 lines · 3.8 KB · Shell
RawDownload
#!/usr/bin/env shset -eu # Uninstalls Zed that was installed using the install.sh script check_remaining_installations() {    platform="$(uname -s)"    if [ "$platform" = "Darwin" ]; then        # Check for any Zed variants in /Applications        remaining=$(ls -d /Applications/Zed*.app 2>/dev/null | wc -l)        [ "$remaining" -eq 0 ]    else        # Check for any Zed variants in ~/.local        remaining=$(ls -d "$HOME/.local/zed"*.app 2>/dev/null | wc -l)        [ "$remaining" -eq 0 ]    fi} prompt_remove_preferences() {    printf "Do you want to keep your Zed preferences? [Y/n] "    read -r response    case "$response" in        [nN]|[nN][oO])            rm -rf "$HOME/.config/zed"            echo "Preferences removed."            ;;        *)            echo "Preferences kept."            ;;    esac} main() {    platform="$(uname -s)"    channel="${ZED_CHANNEL:-stable}"     if [ "$platform" = "Darwin" ]; then        platform="macos"    elif [ "$platform" = "Linux" ]; then        platform="linux"    else        echo "Unsupported platform $platform"        exit 1    fi     "$platform"     echo "Zed has been uninstalled"} linux() {    suffix=""    if [ "$channel" != "stable" ]; then        suffix="-$channel"    fi     appid=""    db_suffix="stable"    case "$channel" in      stable)        appid="dev.zed.Zed"        db_suffix="stable"        ;;      nightly)        appid="dev.zed.Zed-Nightly"        db_suffix="nightly"        ;;      preview)        appid="dev.zed.Zed-Preview"        db_suffix="preview"        ;;      dev)        appid="dev.zed.Zed-Dev"        db_suffix="dev"        ;;      *)        echo "Unknown release channel: ${channel}. Using stable app ID."        appid="dev.zed.Zed"        db_suffix="stable"        ;;    esac     # Remove the app directory    rm -rf "$HOME/.local/zed$suffix.app"     # Remove the binary symlink    rm -f "$HOME/.local/bin/zed"     # Remove the .desktop file    rm -f "$HOME/.local/share/applications/${appid}.desktop"     # Remove the database directory for this channel    rm -rf "$HOME/.local/share/zed/db/0-$db_suffix"     # Remove socket file    rm -f "$HOME/.local/share/zed/zed-$db_suffix.sock"     # Remove the entire Zed directory if no installations remain    if check_remaining_installations; then        rm -rf "$HOME/.local/share/zed"        prompt_remove_preferences    fi     rm -rf $HOME/.zed_server} macos() {    app="Zed.app"    db_suffix="stable"    app_id="dev.zed.Zed"    case "$channel" in      nightly)        app="Zed Nightly.app"        db_suffix="nightly"        app_id="dev.zed.Zed-Nightly"        ;;      preview)        app="Zed Preview.app"        db_suffix="preview"        app_id="dev.zed.Zed-Preview"        ;;      dev)        app="Zed Dev.app"        db_suffix="dev"        app_id="dev.zed.Zed-Dev"        ;;    esac     # Remove the app bundle    if [ -d "/Applications/$app" ]; then        rm -rf "/Applications/$app"    fi     # Remove the binary symlink    rm -f "$HOME/.local/bin/zed"     # Remove the database directory for this channel    rm -rf "$HOME/Library/Application Support/Zed/db/0-$db_suffix"     # Remove app-specific files and directories    rm -rf "$HOME/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/$app_id.sfl"*    rm -rf "$HOME/Library/Caches/$app_id"    rm -rf "$HOME/Library/HTTPStorages/$app_id"    rm -rf "$HOME/Library/Preferences/$app_id.plist"    rm -rf "$HOME/Library/Saved Application State/$app_id.savedState"     # Remove the entire Zed directory if no installations remain    if check_remaining_installations; then        rm -rf "$HOME/Library/Application Support/Zed"        rm -rf "$HOME/Library/Logs/Zed"         prompt_remove_preferences    fi     rm -rf $HOME/.zed_server} main "$@"