Revert "Bail and signal error when the cwd of a resolved task doesn't exist" (#32866)

Reverts zed-industries/zed#32777
This commit is contained in:
Cole Miller 2025-06-17 10:01:16 -04:00 committed by GitHub
parent b9dc5f9061
commit 6c7bcfe752
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 4 additions and 54 deletions

1
Cargo.lock generated
View file

@ -15837,7 +15837,6 @@ dependencies = [
"serde_json_lenient",
"sha2",
"shellexpand 2.1.2",
"smol",
"util",
"workspace-hack",
"zed_actions",

View file

@ -850,18 +850,9 @@ impl RunningState {
(task, None)
}
};
let Some(task) = task_template.resolve_task_and_check_cwd("debug-build-task", &task_context, cx.background_executor().clone()) else {
let Some(task) = task_template.resolve_task("debug-build-task", &task_context) else {
anyhow::bail!("Could not resolve task variables within a debug scenario");
};
let task = match task.await {
Ok(task) => task,
Err(e) => {
workspace.update(cx, |workspace, cx| {
workspace.show_error(&e, cx);
}).ok();
return Err(e)
}
};
let locator_name = if let Some(locator_name) = locator_name {
debug_assert!(!config_is_valid);

View file

@ -29,7 +29,6 @@ serde_json.workspace = true
serde_json_lenient.workspace = true
sha2.workspace = true
shellexpand.workspace = true
smol.workspace = true
util.workspace = true
workspace-hack.workspace = true
zed_actions.workspace = true

View file

@ -1,6 +1,5 @@
use anyhow::{Context as _, Result, anyhow, bail};
use anyhow::{Context as _, bail};
use collections::{HashMap, HashSet};
use gpui::{BackgroundExecutor, Task};
use schemars::{JsonSchema, r#gen::SchemaSettings};
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
@ -271,27 +270,6 @@ impl TaskTemplate {
},
})
}
pub fn resolve_task_and_check_cwd(
&self,
id_base: &str,
task_context: &TaskContext,
executor: BackgroundExecutor,
) -> Option<Task<Result<ResolvedTask>>> {
let resolved_task = self.resolve_task(id_base, task_context)?;
let task = executor.spawn(async move {
if let Some(cwd) = resolved_task.resolved.cwd.as_deref() {
match smol::fs::metadata(cwd).await {
Ok(metadata) if metadata.is_dir() => Ok(resolved_task),
Ok(_) => Err(anyhow!("cwd for resolved task is not a directory: {cwd:?}")),
Err(e) => Err(e).context(format!("reading cwd of resolved task: {cwd:?}")),
}
} else {
Ok(resolved_task)
}
});
Some(task)
}
}
const MAX_DISPLAY_VARIABLE_LENGTH: usize = 15;

View file

@ -1461,27 +1461,10 @@ impl workspace::TerminalProvider for TerminalProvider {
&self,
task: SpawnInTerminal,
window: &mut Window,
cx: &mut Context<Workspace>,
cx: &mut App,
) -> Task<Option<Result<ExitStatus>>> {
let terminal_panel = self.0.clone();
let workspace = cx.weak_entity();
window.spawn(cx, async move |cx| {
if let Some(cwd) = task.cwd.as_deref() {
let result = match smol::fs::metadata(cwd).await {
Ok(metadata) if metadata.is_dir() => Ok(()),
Ok(_) => Err(anyhow!("cwd for resolved task is not a directory: {cwd:?}")),
Err(e) => Err(e).context(format!("reading cwd of resolved task: {cwd:?}")),
};
if let Err(e) = result {
workspace
.update(cx, |workspace, cx| {
workspace.show_error(&e, cx);
})
.ok();
return None;
}
}
let terminal = terminal_panel
.update_in(cx, |terminal_panel, window, cx| {
terminal_panel.spawn_task(&task, window, cx)

View file

@ -135,7 +135,7 @@ pub trait TerminalProvider {
&self,
task: SpawnInTerminal,
window: &mut Window,
cx: &mut Context<Workspace>,
cx: &mut App,
) -> Task<Option<Result<ExitStatus>>>;
}