From 32602bd4f7f83093b0b0a9711ebdde8745385b30 Mon Sep 17 00:00:00 2001 From: Riccardo Strina Date: Fri, 17 Jul 2026 23:26:52 +0200 Subject: [PATCH] Bump binaries version to 6.8.23 and move task helper to separate bin dir - Update all `Cargo.toml` versions and `Cargo.lock` - Move task helper binary to `task-bin/` directory to avoid breaking `tasks.json` on each release - Simplify gradle bridge release fetching to use compile-time version - Extract platform-specific binary naming to shared utilities --- Cargo.lock | 8 ++--- gradle-bridge/Cargo.toml | 2 +- justfile | 4 +-- languages/java/tasks.cmd.example.json | 10 +++--- languages/java/tasks.fish.example.json | 10 +++--- languages/java/tasks.json | 10 +++--- proxy-common/Cargo.toml | 2 +- proxy/Cargo.toml | 2 +- src/gradle_bridge.rs | 25 +++----------- src/task.rs | 48 +++++++------------------- src/util.rs | 10 ++---- task_helper/Cargo.toml | 2 +- tests/task_verification_test.rs | 2 +- 13 files changed, 47 insertions(+), 88 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98010a8..0087c7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -337,7 +337,7 @@ dependencies = [ [[package]] name = "gradle-lsp-bridge" -version = "6.8.20" +version = "6.8.23" dependencies = [ "prost", "proxy-common", @@ -645,7 +645,7 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "java-lsp-proxy" -version = "6.8.20" +version = "6.8.23" dependencies = [ "proxy-common", "serde", @@ -654,7 +654,7 @@ dependencies = [ [[package]] name = "java-task-helper" -version = "0.1.0" +version = "6.8.23" dependencies = [ "serde", "serde_json", @@ -809,7 +809,7 @@ dependencies = [ [[package]] name = "proxy-common" -version = "6.8.20" +version = "6.8.23" dependencies = [ "libc", "serde", diff --git a/gradle-bridge/Cargo.toml b/gradle-bridge/Cargo.toml index 43a92b4..53d229c 100644 --- a/gradle-bridge/Cargo.toml +++ b/gradle-bridge/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gradle-lsp-bridge" -version = "6.8.20" +version = "6.8.23" edition = "2021" publish = false license = "Apache-2.0" diff --git a/justfile b/justfile index b02f477..fe378d5 100644 --- a/justfile +++ b/justfile @@ -1,7 +1,7 @@ native_target := `rustc -vV | grep host | awk '{print $2}'` ext_dir := if os() == "macos" { env("HOME") / "Library/Application Support/Zed/extensions/work/java" } else if os() == "linux" { env("HOME") / ".local/share/zed/extensions/work/java" } else { env("LOCALAPPDATA") / "Zed/extensions/work/java" } proxy_bin := ext_dir / "bin" / "java-lsp-proxy" -tasks_bin := ext_dir / "bin" / "java-task-helper" +tasks_bin := ext_dir / "task-bin" / "java-task-helper" bridge_bin := ext_dir / "bin" / "gradle-lsp-bridge" # Build proxy in debug mode @@ -30,7 +30,7 @@ task-release: # Build task helper release and install to extension workdir for testing task-install: task-release - mkdir -p "{{ ext_dir }}/bin" + mkdir -p "{{ ext_dir }}/task-bin" cp "target/{{ native_target }}/release/java-task-helper" "{{ tasks_bin }}" @echo "Installed to {{ ext_dir }}" diff --git a/languages/java/tasks.cmd.example.json b/languages/java/tasks.cmd.example.json index 6becf32..7b095b4 100644 --- a/languages/java/tasks.cmd.example.json +++ b/languages/java/tasks.cmd.example.json @@ -1,35 +1,35 @@ [ { "label": "Run $ZED_CUSTOM_java_class_name", - "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe\" run-class \"%ZED_FILE%\" \"%ZED_CUSTOM_java_package_name%\" \"%ZED_CUSTOM_java_class_name%\" \"%ZED_CUSTOM_java_outer_class_name%\"", + "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe\" run-class \"%ZED_FILE%\" \"%ZED_CUSTOM_java_package_name%\" \"%ZED_CUSTOM_java_class_name%\" \"%ZED_CUSTOM_java_outer_class_name%\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-main"] }, { "label": "Run $ZED_CUSTOM_java_class_name.$ZED_CUSTOM_java_method_name", - "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe\" run-test-method \"%ZED_FILE%\" \"%ZED_CUSTOM_java_package_name%\" \"%ZED_CUSTOM_java_class_name%\" \"%ZED_CUSTOM_java_outer_class_name%\" \"%ZED_CUSTOM_java_method_name%\"", + "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe\" run-test-method \"%ZED_FILE%\" \"%ZED_CUSTOM_java_package_name%\" \"%ZED_CUSTOM_java_class_name%\" \"%ZED_CUSTOM_java_outer_class_name%\" \"%ZED_CUSTOM_java_method_name%\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-method", "java-test-method-nested"] }, { "label": "Test class $ZED_CUSTOM_java_class_name", - "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe\" run-test-class \"%ZED_FILE%\" \"%ZED_CUSTOM_java_package_name%\" \"%ZED_CUSTOM_java_class_name%\" \"%ZED_CUSTOM_java_outer_class_name%\"", + "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe\" run-test-class \"%ZED_FILE%\" \"%ZED_CUSTOM_java_package_name%\" \"%ZED_CUSTOM_java_class_name%\" \"%ZED_CUSTOM_java_outer_class_name%\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-class", "java-test-class-nested"] }, { "label": "Run tests", - "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe\" run-all-tests \"%ZED_FILE%\"", + "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe\" run-all-tests \"%ZED_FILE%\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-all"] }, { "label": "Clear JDTLS cache", - "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe\" clear-cache", + "command": "\"%LOCALAPPDATA%\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe\" clear-cache", "use_new_terminal": false, "reveal": "always", "tags": [] diff --git a/languages/java/tasks.fish.example.json b/languages/java/tasks.fish.example.json index 0f0a14d..9f587ad 100644 --- a/languages/java/tasks.fish.example.json +++ b/languages/java/tasks.fish.example.json @@ -1,35 +1,35 @@ [ { "label": "Run $ZED_CUSTOM_java_class_name", - "command": "\"$HOME/.local/share/zed/extensions/work/java/bin/java-task-helper\" run-class \"$ZED_FILE\" \"$ZED_CUSTOM_java_package_name\" \"$ZED_CUSTOM_java_class_name\" \"$ZED_CUSTOM_java_outer_class_name\"", + "command": "\"$HOME/.local/share/zed/extensions/work/java/task-bin/java-task-helper\" run-class \"$ZED_FILE\" \"$ZED_CUSTOM_java_package_name\" \"$ZED_CUSTOM_java_class_name\" \"$ZED_CUSTOM_java_outer_class_name\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-main"] }, { "label": "Run $ZED_CUSTOM_java_class_name.$ZED_CUSTOM_java_method_name", - "command": "\"$HOME/.local/share/zed/extensions/work/java/bin/java-task-helper\" run-test-method \"$ZED_FILE\" \"$ZED_CUSTOM_java_package_name\" \"$ZED_CUSTOM_java_class_name\" \"$ZED_CUSTOM_java_outer_class_name\" \"$ZED_CUSTOM_java_method_name\"", + "command": "\"$HOME/.local/share/zed/extensions/work/java/task-bin/java-task-helper\" run-test-method \"$ZED_FILE\" \"$ZED_CUSTOM_java_package_name\" \"$ZED_CUSTOM_java_class_name\" \"$ZED_CUSTOM_java_outer_class_name\" \"$ZED_CUSTOM_java_method_name\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-method", "java-test-method-nested"] }, { "label": "Test class $ZED_CUSTOM_java_class_name", - "command": "\"$HOME/.local/share/zed/extensions/work/java/bin/java-task-helper\" run-test-class \"$ZED_FILE\" \"$ZED_CUSTOM_java_package_name\" \"$ZED_CUSTOM_java_class_name\" \"$ZED_CUSTOM_java_outer_class_name\"", + "command": "\"$HOME/.local/share/zed/extensions/work/java/task-bin/java-task-helper\" run-test-class \"$ZED_FILE\" \"$ZED_CUSTOM_java_package_name\" \"$ZED_CUSTOM_java_class_name\" \"$ZED_CUSTOM_java_outer_class_name\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-class", "java-test-class-nested"] }, { "label": "Run tests", - "command": "\"$HOME/.local/share/zed/extensions/work/java/bin/java-task-helper\" run-all-tests \"$ZED_FILE\"", + "command": "\"$HOME/.local/share/zed/extensions/work/java/task-bin/java-task-helper\" run-all-tests \"$ZED_FILE\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-all"] }, { "label": "Clear JDTLS cache", - "command": "\"$HOME/.local/share/zed/extensions/work/java/bin/java-task-helper\" clear-cache", + "command": "\"$HOME/.local/share/zed/extensions/work/java/task-bin/java-task-helper\" clear-cache", "use_new_terminal": false, "reveal": "always", "tags": [] diff --git a/languages/java/tasks.json b/languages/java/tasks.json index 87c9b0c..38c25ba 100644 --- a/languages/java/tasks.json +++ b/languages/java/tasks.json @@ -1,35 +1,35 @@ [ { "label": "Run $ZED_CUSTOM_java_class_name", - "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/bin/java-task-helper\\\" run-class \\\"$ZED_FILE\\\" \\\"${ZED_CUSTOM_java_package_name:-}\\\" \\\"$ZED_CUSTOM_java_class_name\\\" \\\"${ZED_CUSTOM_java_outer_class_name:-}\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe$Q run-class $Q$env:ZED_FILE$Q $Q$env:ZED_CUSTOM_java_package_name$Q $Q$env:ZED_CUSTOM_java_class_name$Q $Q$env:ZED_CUSTOM_java_outer_class_name$Q\"", + "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/task-bin/java-task-helper\\\" run-class \\\"$ZED_FILE\\\" \\\"${ZED_CUSTOM_java_package_name:-}\\\" \\\"$ZED_CUSTOM_java_class_name\\\" \\\"${ZED_CUSTOM_java_outer_class_name:-}\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe$Q run-class $Q$env:ZED_FILE$Q $Q$env:ZED_CUSTOM_java_package_name$Q $Q$env:ZED_CUSTOM_java_class_name$Q $Q$env:ZED_CUSTOM_java_outer_class_name$Q\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-main"] }, { "label": "Run $ZED_CUSTOM_java_class_name.${ZED_CUSTOM_java_outer_class_name:}.$ZED_CUSTOM_java_method_name", - "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/bin/java-task-helper\\\" run-test-method \\\"$ZED_FILE\\\" \\\"${ZED_CUSTOM_java_package_name:-}\\\" \\\"$ZED_CUSTOM_java_class_name\\\" \\\"${ZED_CUSTOM_java_outer_class_name:-}\\\" \\\"$ZED_CUSTOM_java_method_name\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe$Q run-test-method $Q$env:ZED_FILE$Q $Q$env:ZED_CUSTOM_java_package_name$Q $Q$env:ZED_CUSTOM_java_class_name$Q $Q$env:ZED_CUSTOM_java_outer_class_name$Q $Q$env:ZED_CUSTOM_java_method_name$Q\"", + "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/task-bin/java-task-helper\\\" run-test-method \\\"$ZED_FILE\\\" \\\"${ZED_CUSTOM_java_package_name:-}\\\" \\\"$ZED_CUSTOM_java_class_name\\\" \\\"${ZED_CUSTOM_java_outer_class_name:-}\\\" \\\"$ZED_CUSTOM_java_method_name\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe$Q run-test-method $Q$env:ZED_FILE$Q $Q$env:ZED_CUSTOM_java_package_name$Q $Q$env:ZED_CUSTOM_java_class_name$Q $Q$env:ZED_CUSTOM_java_outer_class_name$Q $Q$env:ZED_CUSTOM_java_method_name$Q\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-method", "java-test-method-nested"] }, { "label": "Test class $ZED_CUSTOM_java_class_name", - "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/bin/java-task-helper\\\" run-test-class \\\"$ZED_FILE\\\" \\\"${ZED_CUSTOM_java_package_name:-}\\\" \\\"$ZED_CUSTOM_java_class_name\\\" \\\"${ZED_CUSTOM_java_outer_class_name:-}\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe$Q run-test-class $Q$env:ZED_FILE$Q $Q$env:ZED_CUSTOM_java_package_name$Q $Q$env:ZED_CUSTOM_java_class_name$Q $Q$env:ZED_CUSTOM_java_outer_class_name$Q\"", + "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/task-bin/java-task-helper\\\" run-test-class \\\"$ZED_FILE\\\" \\\"${ZED_CUSTOM_java_package_name:-}\\\" \\\"$ZED_CUSTOM_java_class_name\\\" \\\"${ZED_CUSTOM_java_outer_class_name:-}\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe$Q run-test-class $Q$env:ZED_FILE$Q $Q$env:ZED_CUSTOM_java_package_name$Q $Q$env:ZED_CUSTOM_java_class_name$Q $Q$env:ZED_CUSTOM_java_outer_class_name$Q\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-class", "java-test-class-nested"] }, { "label": "Run tests", - "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/bin/java-task-helper\\\" run-all-tests \\\"$ZED_FILE\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe$Q run-all-tests $Q$env:ZED_FILE$Q\"", + "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/task-bin/java-task-helper\\\" run-all-tests \\\"$ZED_FILE\\\" ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe$Q run-all-tests $Q$env:ZED_FILE$Q\"", "use_new_terminal": false, "reveal": "always", "tags": ["java-test-all"] }, { "label": "Clear JDTLS cache", - "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/bin/java-task-helper\\\" clear-cache ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\bin\\java-task-helper.exe$Q clear-cache\"", + "command": "set ErrorActionPreference SilentlyContinue ; eval \"EXT=\\\"${XDG_DATA_HOME:-$HOME/.local/share}/zed/extensions/work/java\\\"; if [ \\\"$(uname 2>/dev/null)\\\" = \\\"Darwin\\\" ]; then EXT=\\\"$HOME/Library/Application Support/Zed/extensions/work/java\\\"; fi; if [ -n \\\"$LOCALAPPDATA\\\" ]; then CYGP=$(cygpath -u \\\"$LOCALAPPDATA\\\" 2>/dev/null); if [ -n \\\"$CYGP\\\" ]; then EXT=\\\"$CYGP/zed/extensions/work/java\\\"; else EXT=\\\"$LOCALAPPDATA/zed/extensions/work/java\\\"; fi; fi; \\\"\\$EXT/task-bin/java-task-helper\\\" clear-cache ; exit\" ; set ErrorActionPreference Continue ; $Q=[char]34 ; iex \"& $Q$env:LOCALAPPDATA\\zed\\extensions\\work\\java\\task-bin\\java-task-helper.exe$Q clear-cache\"", "use_new_terminal": false, "reveal": "always", "tags": [] diff --git a/proxy-common/Cargo.toml b/proxy-common/Cargo.toml index 8f6bc44..08d80ce 100644 --- a/proxy-common/Cargo.toml +++ b/proxy-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "proxy-common" -version = "6.8.20" +version = "6.8.23" edition = "2021" publish = false license = "Apache-2.0" diff --git a/proxy/Cargo.toml b/proxy/Cargo.toml index 8c16f5a..dad6fea 100644 --- a/proxy/Cargo.toml +++ b/proxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "java-lsp-proxy" -version = "6.8.20" +version = "6.8.23" edition = "2021" publish = false license = "Apache-2.0" diff --git a/src/gradle_bridge.rs b/src/gradle_bridge.rs index 8c37bcb..51d3820 100644 --- a/src/gradle_bridge.rs +++ b/src/gradle_bridge.rs @@ -1,9 +1,8 @@ use std::{fs::metadata, path::PathBuf}; use zed_extension_api::{ - self as zed, DownloadedFileType, GithubReleaseOptions, LanguageServerId, - LanguageServerInstallationStatus, Worktree, serde_json::Value, - set_language_server_installation_status, + self as zed, DownloadedFileType, LanguageServerId, LanguageServerInstallationStatus, Worktree, + serde_json::Value, set_language_server_installation_status, }; use crate::{ @@ -66,15 +65,7 @@ impl Downloadable for GradleBridge { } fn fetch_latest_version(&self, _worktree: &Worktree) -> zed::Result { - Ok(zed::latest_github_release( - GITHUB_REPO, - GithubReleaseOptions { - require_assets: true, - pre_release: false, - }, - ) - .map_err(|err| format!("Failed to fetch latest bridge release from {GITHUB_REPO}: {err}"))? - .version) + Ok(format!("v{}", env!("CARGO_PKG_VERSION"))) } fn download( @@ -91,14 +82,8 @@ impl Downloadable for GradleBridge { return Ok(PathBuf::from(bin_path)); } - let release = zed::latest_github_release( - GITHUB_REPO, - GithubReleaseOptions { - require_assets: true, - pre_release: false, - }, - ) - .map_err(|err| format!("Failed to fetch bridge release: {err}"))?; + let release = zed::github_release_by_tag_name(GITHUB_REPO, version) + .map_err(|err| format!("Failed to fetch bridge release: {err}"))?; let asset = release .assets diff --git a/src/task.rs b/src/task.rs index 11f03ad..fec9652 100644 --- a/src/task.rs +++ b/src/task.rs @@ -7,11 +7,16 @@ use zed_extension_api::{ use crate::{ downloadable::Downloadable, - util::{mark_checked_once, remove_all_files_except, should_use_local_or_download}, + util::{ + mark_checked_once, platform_asset_name, platform_exec_name, remove_all_files_except, + should_use_local_or_download, + }, }; const TASK_HELPER_BINARY: &str = "java-task-helper"; -const TASK_HELPER_INSTALL_PATH: &str = "bin"; +/// It needs to live in a different directory compared to other vended binaries +/// to avoid breaking `tasks.json` on each release +const TASK_HELPER_INSTALL_PATH: &str = "task-bin"; const GITHUB_REPO: &str = "zed-extensions/java"; pub struct TaskHelper { @@ -58,10 +63,8 @@ impl Downloadable for TaskHelper { _worktree: &Worktree, ) -> zed::Result { let (name, file_type) = asset_name()?; - let bin_path = format!( - "{TASK_HELPER_INSTALL_PATH}/{version}/{}", - task_helper_exec() - ); + let exec_name = task_helper_exec(); + let bin_path = format!("{TASK_HELPER_INSTALL_PATH}/{}", exec_name); if metadata(&bin_path).is_ok() { self.cached_path = Some(bin_path.clone()); @@ -77,14 +80,12 @@ impl Downloadable for TaskHelper { .find(|a| a.name == name) .ok_or_else(|| format!("No asset found matching {name:?}"))?; - let version_dir = format!("{TASK_HELPER_INSTALL_PATH}/{version}"); - set_language_server_installation_status( language_server_id, &LanguageServerInstallationStatus::Downloading, ); - zed::download_file(&asset.download_url, &version_dir, file_type) + zed::download_file(&asset.download_url, TASK_HELPER_INSTALL_PATH, file_type) .map_err(|err| format!("Failed to download task helper: {err}"))?; let _ = zed::make_file_executable(&bin_path); @@ -92,7 +93,7 @@ impl Downloadable for TaskHelper { language_server_id, &LanguageServerInstallationStatus::None, ); - let _ = remove_all_files_except(TASK_HELPER_INSTALL_PATH, version); + let _ = remove_all_files_except(TASK_HELPER_INSTALL_PATH, &exec_name); let _ = mark_checked_once(TASK_HELPER_INSTALL_PATH, version); self.cached_path = Some(bin_path.clone()); @@ -151,32 +152,9 @@ impl Downloadable for TaskHelper { } fn asset_name() -> zed::Result<(String, DownloadedFileType)> { - let (os, arch) = zed::current_platform(); - let (os_str, file_type) = match os { - zed::Os::Mac => ("darwin", DownloadedFileType::GzipTar), - zed::Os::Linux => ("linux", DownloadedFileType::GzipTar), - zed::Os::Windows => ("windows", DownloadedFileType::Zip), - }; - let arch_str = match arch { - zed::Architecture::Aarch64 => "aarch64", - zed::Architecture::X8664 => "x86_64", - _ => return Err("Unsupported architecture".into()), - }; - let ext = if matches!(file_type, DownloadedFileType::Zip) { - "zip" - } else { - "tar.gz" - }; - Ok(( - format!("{TASK_HELPER_BINARY}-{os_str}-{arch_str}.{ext}"), - file_type, - )) + platform_asset_name(TASK_HELPER_BINARY) } fn task_helper_exec() -> String { - let (os, _arch) = zed::current_platform(); - match os { - zed::Os::Linux | zed::Os::Mac => TASK_HELPER_BINARY.to_string(), - zed::Os::Windows => format!("{TASK_HELPER_BINARY}.exe"), - } + platform_exec_name(TASK_HELPER_BINARY) } diff --git a/src/util.rs b/src/util.rs index e36b58e..fc234a2 100644 --- a/src/util.rs +++ b/src/util.rs @@ -199,10 +199,7 @@ pub fn get_java_executable( /// /// Returns the executable java name pub fn get_java_exec_name() -> String { - match current_platform().0 { - Os::Windows => "java.exe".to_string(), - _ => "java".to_string(), - } + platform_exec_name("java") } /// The single install directory shared by every native binary the extension @@ -211,9 +208,8 @@ pub fn get_java_exec_name() -> String { /// other's `remove_all_files_except` cleanup. pub const NATIVE_BIN_DIR: &str = "bin"; -/// The platform-specific executable file name for a downloaded native binary -/// (appends `.exe` on Windows). Shared by the proxy and the Gradle bridge, which -/// differ only in `binary`. +/// The platform-specific executable file name for a binary +/// (appends `.exe` on Windows). pub fn platform_exec_name(binary: &str) -> String { match current_platform().0 { Os::Windows => format!("{binary}.exe"), diff --git a/task_helper/Cargo.toml b/task_helper/Cargo.toml index 334b85b..ee0776e 100644 --- a/task_helper/Cargo.toml +++ b/task_helper/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "java-task-helper" -version = "0.1.0" +version = "6.8.23" edition = "2021" publish = false license = "Apache-2.0" diff --git a/tests/task_verification_test.rs b/tests/task_verification_test.rs index 7bc2fbd..56a7ea8 100644 --- a/tests/task_verification_test.rs +++ b/tests/task_verification_test.rs @@ -236,7 +236,7 @@ impl<'a> TaskRunner<'a> { // Create a temporary ZED_EXT directory structure matching what tasks.json expects let zed_ext_base = self.project.temp_dir.join("mock_zed_ext"); - let zed_ext_dir = zed_ext_base.join("zed/extensions/work/java/bin"); + let zed_ext_dir = zed_ext_base.join("zed/extensions/work/java/task-bin"); fs::create_dir_all(&zed_ext_dir).unwrap(); let dest_bin = zed_ext_dir.join("java-task-helper"); fs::copy(&found_bin, &dest_bin).unwrap();