copilot: Fix Copilot fails to sign in (#36138)
Closes #36093 Pin copilot version to 1.354 for now until further investigation. Release Notes: - Fixes issue where Copilot failed to sign in. Co-authored-by: MrSubidubi <dev@bahn.sh>
This commit is contained in:
parent
e52f148304
commit
4a35498829
9 changed files with 52 additions and 11 deletions
|
@ -21,7 +21,7 @@ use language::{
|
||||||
point_from_lsp, point_to_lsp,
|
point_from_lsp, point_to_lsp,
|
||||||
};
|
};
|
||||||
use lsp::{LanguageServer, LanguageServerBinary, LanguageServerId, LanguageServerName};
|
use lsp::{LanguageServer, LanguageServerBinary, LanguageServerId, LanguageServerName};
|
||||||
use node_runtime::NodeRuntime;
|
use node_runtime::{NodeRuntime, VersionCheck};
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
use project::DisableAiSettings;
|
use project::DisableAiSettings;
|
||||||
use request::StatusNotification;
|
use request::StatusNotification;
|
||||||
|
@ -1169,9 +1169,8 @@ async fn get_copilot_lsp(fs: Arc<dyn Fs>, node_runtime: NodeRuntime) -> anyhow::
|
||||||
const SERVER_PATH: &str =
|
const SERVER_PATH: &str =
|
||||||
"node_modules/@github/copilot-language-server/dist/language-server.js";
|
"node_modules/@github/copilot-language-server/dist/language-server.js";
|
||||||
|
|
||||||
let latest_version = node_runtime
|
// pinning it: https://github.com/zed-industries/zed/issues/36093
|
||||||
.npm_package_latest_version(PACKAGE_NAME)
|
const PINNED_VERSION: &str = "1.354";
|
||||||
.await?;
|
|
||||||
let server_path = paths::copilot_dir().join(SERVER_PATH);
|
let server_path = paths::copilot_dir().join(SERVER_PATH);
|
||||||
|
|
||||||
fs.create_dir(paths::copilot_dir()).await?;
|
fs.create_dir(paths::copilot_dir()).await?;
|
||||||
|
@ -1181,12 +1180,13 @@ async fn get_copilot_lsp(fs: Arc<dyn Fs>, node_runtime: NodeRuntime) -> anyhow::
|
||||||
PACKAGE_NAME,
|
PACKAGE_NAME,
|
||||||
&server_path,
|
&server_path,
|
||||||
paths::copilot_dir(),
|
paths::copilot_dir(),
|
||||||
&latest_version,
|
&PINNED_VERSION,
|
||||||
|
VersionCheck::VersionMismatch,
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
if should_install {
|
if should_install {
|
||||||
node_runtime
|
node_runtime
|
||||||
.npm_install_packages(paths::copilot_dir(), &[(PACKAGE_NAME, &latest_version)])
|
.npm_install_packages(paths::copilot_dir(), &[(PACKAGE_NAME, &PINNED_VERSION)])
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,13 @@ impl LspAdapter for CssLspAdapter {
|
||||||
|
|
||||||
let should_install_language_server = self
|
let should_install_language_server = self
|
||||||
.node
|
.node
|
||||||
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version)
|
.should_install_npm_package(
|
||||||
|
Self::PACKAGE_NAME,
|
||||||
|
&server_path,
|
||||||
|
&container_dir,
|
||||||
|
&version,
|
||||||
|
Default::default(),
|
||||||
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
if should_install_language_server {
|
if should_install_language_server {
|
||||||
|
|
|
@ -340,7 +340,13 @@ impl LspAdapter for JsonLspAdapter {
|
||||||
|
|
||||||
let should_install_language_server = self
|
let should_install_language_server = self
|
||||||
.node
|
.node
|
||||||
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version)
|
.should_install_npm_package(
|
||||||
|
Self::PACKAGE_NAME,
|
||||||
|
&server_path,
|
||||||
|
&container_dir,
|
||||||
|
&version,
|
||||||
|
Default::default(),
|
||||||
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
if should_install_language_server {
|
if should_install_language_server {
|
||||||
|
|
|
@ -206,6 +206,7 @@ impl LspAdapter for PythonLspAdapter {
|
||||||
&server_path,
|
&server_path,
|
||||||
&container_dir,
|
&container_dir,
|
||||||
&version,
|
&version,
|
||||||
|
Default::default(),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,13 @@ impl LspAdapter for TailwindLspAdapter {
|
||||||
|
|
||||||
let should_install_language_server = self
|
let should_install_language_server = self
|
||||||
.node
|
.node
|
||||||
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version)
|
.should_install_npm_package(
|
||||||
|
Self::PACKAGE_NAME,
|
||||||
|
&server_path,
|
||||||
|
&container_dir,
|
||||||
|
&version,
|
||||||
|
Default::default(),
|
||||||
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
if should_install_language_server {
|
if should_install_language_server {
|
||||||
|
|
|
@ -589,6 +589,7 @@ impl LspAdapter for TypeScriptLspAdapter {
|
||||||
&server_path,
|
&server_path,
|
||||||
&container_dir,
|
&container_dir,
|
||||||
version.typescript_version.as_str(),
|
version.typescript_version.as_str(),
|
||||||
|
Default::default(),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,7 @@ impl LspAdapter for VtslsLspAdapter {
|
||||||
&server_path,
|
&server_path,
|
||||||
&container_dir,
|
&container_dir,
|
||||||
&latest_version.server_version,
|
&latest_version.server_version,
|
||||||
|
Default::default(),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
@ -129,6 +130,7 @@ impl LspAdapter for VtslsLspAdapter {
|
||||||
&container_dir.join(Self::TYPESCRIPT_TSDK_PATH),
|
&container_dir.join(Self::TYPESCRIPT_TSDK_PATH),
|
||||||
&container_dir,
|
&container_dir,
|
||||||
&latest_version.typescript_version,
|
&latest_version.typescript_version,
|
||||||
|
Default::default(),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
|
|
@ -104,7 +104,13 @@ impl LspAdapter for YamlLspAdapter {
|
||||||
|
|
||||||
let should_install_language_server = self
|
let should_install_language_server = self
|
||||||
.node
|
.node
|
||||||
.should_install_npm_package(Self::PACKAGE_NAME, &server_path, &container_dir, &version)
|
.should_install_npm_package(
|
||||||
|
Self::PACKAGE_NAME,
|
||||||
|
&server_path,
|
||||||
|
&container_dir,
|
||||||
|
&version,
|
||||||
|
Default::default(),
|
||||||
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
if should_install_language_server {
|
if should_install_language_server {
|
||||||
|
|
|
@ -29,6 +29,15 @@ pub struct NodeBinaryOptions {
|
||||||
pub use_paths: Option<(PathBuf, PathBuf)>,
|
pub use_paths: Option<(PathBuf, PathBuf)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub enum VersionCheck {
|
||||||
|
/// Check whether the installed and requested version have a mismatch
|
||||||
|
VersionMismatch,
|
||||||
|
/// Only check whether the currently installed version is older than the newest one
|
||||||
|
#[default]
|
||||||
|
OlderVersion,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct NodeRuntime(Arc<Mutex<NodeRuntimeState>>);
|
pub struct NodeRuntime(Arc<Mutex<NodeRuntimeState>>);
|
||||||
|
|
||||||
|
@ -287,6 +296,7 @@ impl NodeRuntime {
|
||||||
local_executable_path: &Path,
|
local_executable_path: &Path,
|
||||||
local_package_directory: &Path,
|
local_package_directory: &Path,
|
||||||
latest_version: &str,
|
latest_version: &str,
|
||||||
|
version_check: VersionCheck,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
// In the case of the local system not having the package installed,
|
// In the case of the local system not having the package installed,
|
||||||
// or in the instances where we fail to parse package.json data,
|
// or in the instances where we fail to parse package.json data,
|
||||||
|
@ -311,7 +321,10 @@ impl NodeRuntime {
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
installed_version < latest_version
|
match version_check {
|
||||||
|
VersionCheck::VersionMismatch => installed_version != latest_version,
|
||||||
|
VersionCheck::OlderVersion => installed_version < latest_version,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue