-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Closes #14306 This looks at what #16660 did and install.sh script as a base for the uninstall.sh script. The script is bundled with the cli by default unless the cli/no-bundled-uninstall feature is selected which is done, so package managers could build zed without bundling a useless feature and increasing binary size. I don't have capabilities to test this right now, so any help with that is appreciated. Release Notes: - Added an uninstall script for Zed installations done via zed.dev. To uninstall zed, run `zed --uninstall` via the CLI binary.
- Loading branch information
Showing
4 changed files
with
197 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
fn main() { | ||
if std::env::var("ZED_UPDATE_EXPLANATION").is_ok() { | ||
println!(r#"cargo:rustc-cfg=feature="no-bundled-uninstall""#); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
#!/usr/bin/env sh | ||
set -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 "$@" |