debugger/tasks: Remove TaskType enum (#29208)
Closes #ISSUE Release Notes: - N/A --------- Co-authored-by: Cole Miller <m@cole-miller.net> Co-authored-by: Anthony Eid <hello@anthonyeid.me> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com> Co-authored-by: Anthony <anthony@zed.dev> Co-authored-by: Conrad <conrad@zed.dev>
This commit is contained in:
parent
053fafa90e
commit
67615b968b
53 changed files with 1272 additions and 1114 deletions
|
@ -7,7 +7,6 @@ use std::path::PathBuf;
|
|||
use util::serde::default_true;
|
||||
use util::{ResultExt, truncate_and_remove_front};
|
||||
|
||||
use crate::debug_format::TcpArgumentsTemplate;
|
||||
use crate::{
|
||||
AttachRequest, ResolvedTask, RevealTarget, Shell, SpawnInTerminal, TaskContext, TaskId,
|
||||
VariableName, ZED_VARIABLE_NAME_PREFIX,
|
||||
|
@ -59,9 +58,6 @@ pub struct TaskTemplate {
|
|||
/// * `on_success` — hide the terminal tab on task success only, otherwise behaves similar to `always`.
|
||||
#[serde(default)]
|
||||
pub hide: HideStrategy,
|
||||
/// If this task should start a debugger or not
|
||||
#[serde(default, skip)]
|
||||
pub task_type: TaskType,
|
||||
/// Represents the tags which this template attaches to.
|
||||
/// Adding this removes this task from other UI and gives you ability to run it by tag.
|
||||
#[serde(default, deserialize_with = "non_empty_string_vec")]
|
||||
|
@ -87,34 +83,6 @@ pub enum DebugArgsRequest {
|
|||
Attach(AttachRequest),
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Eq, PartialEq, Clone, Debug)]
|
||||
/// This represents the arguments for the debug task.
|
||||
pub struct DebugArgs {
|
||||
/// The launch type
|
||||
pub request: DebugArgsRequest,
|
||||
/// Adapter choice
|
||||
pub adapter: String,
|
||||
/// TCP connection to make with debug adapter
|
||||
pub tcp_connection: Option<TcpArgumentsTemplate>,
|
||||
/// Args to send to debug adapter
|
||||
pub initialize_args: Option<serde_json::value::Value>,
|
||||
/// the locator to use
|
||||
pub locator: Option<String>,
|
||||
/// Whether to tell the debug adapter to stop on entry
|
||||
pub stop_on_entry: Option<bool>,
|
||||
}
|
||||
|
||||
/// Represents the type of task that is being ran
|
||||
#[derive(Default, Eq, PartialEq, Clone, Debug)]
|
||||
#[allow(clippy::large_enum_variant)]
|
||||
pub enum TaskType {
|
||||
/// Act like a typically task that runs commands
|
||||
#[default]
|
||||
Script,
|
||||
/// This task starts the debugger for a language
|
||||
Debug(DebugArgs),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
/// The type of task modal to spawn
|
||||
pub enum TaskModal {
|
||||
|
@ -174,9 +142,7 @@ impl TaskTemplate {
|
|||
/// Every [`ResolvedTask`] gets a [`TaskId`], based on the `id_base` (to avoid collision with various task sources),
|
||||
/// and hashes of its template and [`TaskContext`], see [`ResolvedTask`] fields' documentation for more details.
|
||||
pub fn resolve_task(&self, id_base: &str, cx: &TaskContext) -> Option<ResolvedTask> {
|
||||
if self.label.trim().is_empty()
|
||||
|| (self.command.trim().is_empty() && matches!(self.task_type, TaskType::Script))
|
||||
{
|
||||
if self.label.trim().is_empty() || self.command.trim().is_empty() {
|
||||
return None;
|
||||
}
|
||||
|
||||
|
@ -285,7 +251,7 @@ impl TaskTemplate {
|
|||
substituted_variables,
|
||||
original_task: self.clone(),
|
||||
resolved_label: full_label.clone(),
|
||||
resolved: Some(SpawnInTerminal {
|
||||
resolved: SpawnInTerminal {
|
||||
id,
|
||||
cwd,
|
||||
full_label,
|
||||
|
@ -310,7 +276,7 @@ impl TaskTemplate {
|
|||
show_summary: self.show_summary,
|
||||
show_command: self.show_command,
|
||||
show_rerun: true,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -474,12 +440,7 @@ mod tests {
|
|||
.resolve_task(TEST_ID_BASE, task_cx)
|
||||
.unwrap_or_else(|| panic!("failed to resolve task {task_without_cwd:?}"));
|
||||
assert_substituted_variables(&resolved_task, Vec::new());
|
||||
resolved_task
|
||||
.resolved
|
||||
.clone()
|
||||
.unwrap_or_else(|| {
|
||||
panic!("failed to get resolve data for resolved task. Template: {task_without_cwd:?} Resolved: {resolved_task:?}")
|
||||
})
|
||||
resolved_task.resolved
|
||||
};
|
||||
|
||||
let cx = TaskContext {
|
||||
|
@ -626,10 +587,7 @@ mod tests {
|
|||
all_variables.iter().map(|(name, _)| name.clone()).collect(),
|
||||
);
|
||||
|
||||
let spawn_in_terminal = resolved_task
|
||||
.resolved
|
||||
.as_ref()
|
||||
.expect("should have resolved a spawn in terminal task");
|
||||
let spawn_in_terminal = &resolved_task.resolved;
|
||||
assert_eq!(
|
||||
spawn_in_terminal.label,
|
||||
format!(
|
||||
|
@ -713,7 +671,7 @@ mod tests {
|
|||
.resolve_task(TEST_ID_BASE, &TaskContext::default())
|
||||
.unwrap();
|
||||
assert_substituted_variables(&resolved_task, Vec::new());
|
||||
let resolved = resolved_task.resolved.unwrap();
|
||||
let resolved = resolved_task.resolved;
|
||||
assert_eq!(resolved.label, task.label);
|
||||
assert_eq!(resolved.command, task.command);
|
||||
assert_eq!(resolved.args, task.args);
|
||||
|
@ -882,8 +840,7 @@ mod tests {
|
|||
let resolved = template
|
||||
.resolve_task(TEST_ID_BASE, &context)
|
||||
.unwrap()
|
||||
.resolved
|
||||
.unwrap();
|
||||
.resolved;
|
||||
|
||||
assert_eq!(resolved.env["TASK_ENV_VAR1"], "TASK_ENV_VAR1_VALUE");
|
||||
assert_eq!(resolved.env["TASK_ENV_VAR2"], "env_var_2 1234 5678");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue