From 28bcc954685a07b816bf3db1e2f12ec5f4a7e703 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Tue, 30 Apr 2024 16:01:07 -0600 Subject: [PATCH] installer (#11229) Release Notes: - N/A --------- Co-authored-by: Mikayla --- script/bundle-linux | 20 +++++++++++++++----- script/install.sh | 29 ++++++++++++++++------------- script/linux | 2 ++ 3 files changed, 33 insertions(+), 18 deletions(-) mode change 100644 => 100755 script/install.sh diff --git a/script/bundle-linux b/script/bundle-linux index d54a19a322..ff160b71e5 100755 --- a/script/bundle-linux +++ b/script/bundle-linux @@ -40,10 +40,15 @@ cargo build --release --target "${target_triple}" --package zed # Later, we probably want to do something like this: https://github.com/GabrielMajeri/separate-symbols strip "target/${target_triple}/release/Zed" +suffix="" +if [ "$channel" != "stable" ]; then + suffix="-$channel" +fi + # Move everything that should end up in the final package # into a temp directory. temp_dir=$(mktemp -d) -zed_dir="${temp_dir}/zed.app" +zed_dir="${temp_dir}/zed$suffix.app" # Binary mkdir -p "${zed_dir}/bin" @@ -51,13 +56,18 @@ cp "target/${target_triple}/release/Zed" "${zed_dir}/zed" # Icons mkdir -p "${zed_dir}/share/icons/hicolor/512x512/apps" -cp "crates/zed/resources/app-icon-nightly.png" "${zed_dir}/share/icons/hicolor/512x512/apps/zed.png" +cp "crates/zed/resources/app-icon$suffix.png" "${zed_dir}/share/icons/hicolor/512x512/apps/zed.png" mkdir -p "${zed_dir}/share/icons/hicolor/1024x1024/apps" -cp "crates/zed/resources/app-icon-nightly@2x.png" "${zed_dir}/share/icons/hicolor/1024x1024/apps/zed.png" +cp "crates/zed/resources/app-icon$suffix/share/icons/hicolor/1024x1024/apps/zed.png" # .desktop mkdir -p "${zed_dir}/share/applications" -cp "crates/zed/resources/zed.desktop" "${zed_dir}/share/applications/zed.desktop" +cp "crates/zed/resources/zed$suffix.desktop" "${zed_dir}/share/applications/zed$suffix.desktop" +if [[ "$channel" == "preview" ]]; then + sed -i "s|Name=Zed|Name=Zed Preview|g" "${zed_dir}/share/applications/zed$suffix.desktop" +elif [[ "$channel" == "nightly" ]]; then + sed -i "s|Name=Zed|Name=Zed Nightly|g" "${zed_dir}/share/applications/zed$suffix.desktop" +fi # Licenses cp "assets/licenses.md" "${zed_dir}/licenses.md" @@ -74,4 +84,4 @@ else fi rm -rf "${archive}" -tar -czvf $archive -C ${temp_dir} . +tar -czvf $archive -C ${temp_dir} ${zed_dir} diff --git a/script/install.sh b/script/install.sh old mode 100644 new mode 100755 index e6845012c7..cd8030d06c --- a/script/install.sh +++ b/script/install.sh @@ -43,32 +43,35 @@ main() { } linux() { - echo "Downloading zed.tar.gz" - # curl "https://zed.dev/api/download/zed.tar.gz?platform=$platform&arch=$arch&channel=$channel" > "$temp/zed.tar.gz" - + echo "Downloading Zed" curl "https://zed.dev/api/releases/$channel/latest/zed-linux-$arch.tar.gz" > "$temp/zed-linux-$arch.tar.gz" - mkdir -p "$HOME/.local/zed.app" + suffix="" + if [[ $channel != "stable" ]]; then + suffix="-$channel" + fi + + mkdir -p "$HOME/.local/zed$suffix.app" tar -xzf "$temp/zed-linux-$arch.tar.gz" -C "$HOME/.local/" - # Set up xdg links so that app shows in the dock mkdir -p "$HOME/.local/bin" "$HOME/.local/share/applications" - ln -sf ~/.local/zed.app/bin/zed ~/.local/bin/ - cp ~/.local/zed.app/share/applications/zed.desktop ~/.local/share/applications/ - sed -i "s|Icon=zed|Icon=$HOME/.local/zed.app/share/icons/hicolor/512x512/apps/zed.png|g" ~/.local/share/applications/zed.desktop - sed -i "s|Exec=zed|Exec=$HOME/.local/zed.app/bin/zed|g" ~/.local/share/applications/zed.desktop + ln -sf ~/.local/zed$suffix.app/bin/zed ~/.local/bin/ + cp ~/.local/zed$suffix.app/share/applications/zed$suffix.desktop ~/.local/share/applications/ + sed -i "s|Icon=zed|Icon=$HOME/.local/zed$suffix.app/share/icons/hicolor/512x512/apps/zed.png|g" ~/.local/share/applications/zed$suffix.desktop + sed -i "s|Exec=zed|Exec=$HOME/.local/zed$suffix.app/bin/zed|g" ~/.local/share/applications/zed.desktop - if which zed >/dev/null 2>&1; then - else + if ! which zed >/dev/null 2>&1; then echo "To run zed from your terminal, you must add ~/.local/bin to your PATH" - exit 1 + echo "Run:" + echo " echo 'export PATH=\$HOME/.local/bin:\$PATH' >> ~/.bashrc" + echo " source ~/.bashrc" fi ~/.local/bin/zed } macos() { - echo "Downloading Zed.dmg..." + echo "Downloading Zed" curl "https://zed.dev/api/releases/$channel/latest/Zed-$arch.dmg" > "$temp/Zed-$arch.dmg" hdiutil attach -quiet "$temp/Zed-$arch.dmg" -mountpoint "$temp/mount" app="$(cd "$temp/mount/"; echo *.app)" diff --git a/script/linux b/script/linux index 5ec0de37b4..9677491f33 100755 --- a/script/linux +++ b/script/linux @@ -13,6 +13,8 @@ maysudo=$(command -v sudo || command -v doas || true) apt=$(command -v apt-get || true) if [[ -n $apt ]]; then deps=( + gcc + g++ libasound2-dev libfontconfig-dev libwayland-dev