MCPcopy Create free account
hub / github.com/csskit/csskit / language_server_binary_path

Method language_server_binary_path

packages/csskit_zed/src/lib.rs:54–92  ·  view source on GitHub ↗
(&self, language_server_id: &LanguageServerId)

Source from the content-addressed store, hash-verified

52
53impl CsskitExtension {
54 fn language_server_binary_path(&self, language_server_id: &LanguageServerId) -> Result<String> {
55 let (platform, arch) = zed::current_platform();
56 let binary_path = binary_name(platform).to_string();
57
58 zed::set_language_server_installation_status(
59 language_server_id,
60 &zed::LanguageServerInstallationStatus::CheckingForUpdate,
61 );
62
63 let release =
64 zed::latest_github_release(REPO, zed::GithubReleaseOptions { require_assets: true, pre_release: false })?;
65
66 let binary_exists = fs::metadata(&binary_path).is_ok_and(|m| m.is_file());
67
68 if !needs_download(installed_version().as_deref(), &release.version, binary_exists) {
69 return Ok(binary_path);
70 }
71
72 let asset = find_asset(&release.assets, &asset_name(platform, arch)?)?;
73
74 zed::set_language_server_installation_status(
75 language_server_id,
76 &zed::LanguageServerInstallationStatus::Downloading,
77 );
78
79 let tmp_path = format!("{binary_path}.tmp");
80 let _ = fs::remove_file(&tmp_path);
81
82 zed::download_file(&asset.download_url, &tmp_path, zed::DownloadedFileType::Uncompressed)
83 .map_err(|e| format!("failed to download file: {e}"))?;
84
85 zed::make_file_executable(&tmp_path)?;
86
87 fs::rename(&tmp_path, &binary_path).map_err(|e| format!("failed to install binary: {e}"))?;
88
89 let _ = fs::write(VERSION_FILE, &release.version);
90
91 Ok(binary_path)
92 }
93}
94
95impl zed::Extension for CsskitExtension {

Callers 1

Calls 5

binary_nameFunction · 0.85
needs_downloadFunction · 0.85
installed_versionFunction · 0.85
find_assetFunction · 0.85
asset_nameFunction · 0.85

Tested by

no test coverage detected