- [x] Pass in cwd - [x] Use the appropriate package manager - [x] Don't mix up package.json and composer.json Release Notes: - debugger: Fixed wrong arguments being passed to the DAP when debugging scripts from package.json.
63 lines
1.9 KiB
Rust
63 lines
1.9 KiB
Rust
use std::borrow::Cow;
|
|
|
|
use anyhow::{Result, bail};
|
|
use async_trait::async_trait;
|
|
use dap::{DapLocator, DebugRequest, adapters::DebugAdapterName};
|
|
use gpui::SharedString;
|
|
|
|
use task::{DebugScenario, SpawnInTerminal, TaskTemplate, VariableName};
|
|
|
|
pub(crate) struct NodeLocator;
|
|
|
|
const TYPESCRIPT_RUNNER_VARIABLE: VariableName =
|
|
VariableName::Custom(Cow::Borrowed("TYPESCRIPT_RUNNER"));
|
|
|
|
#[async_trait]
|
|
impl DapLocator for NodeLocator {
|
|
fn name(&self) -> SharedString {
|
|
SharedString::new_static("Node")
|
|
}
|
|
|
|
/// Determines whether this locator can generate debug target for given task.
|
|
async fn create_scenario(
|
|
&self,
|
|
build_config: &TaskTemplate,
|
|
resolved_label: &str,
|
|
adapter: &DebugAdapterName,
|
|
) -> Option<DebugScenario> {
|
|
if adapter.0.as_ref() != "JavaScript" {
|
|
return None;
|
|
}
|
|
if build_config.command != TYPESCRIPT_RUNNER_VARIABLE.template_value()
|
|
&& build_config.command != "npm"
|
|
&& build_config.command != "pnpm"
|
|
&& build_config.command != "yarn"
|
|
{
|
|
return None;
|
|
}
|
|
|
|
let config = serde_json::json!({
|
|
"request": "launch",
|
|
"type": "pwa-node",
|
|
"args": build_config.args.clone(),
|
|
"cwd": build_config.cwd.clone(),
|
|
"runtimeExecutable": build_config.command.clone(),
|
|
"env": build_config.env.clone(),
|
|
"runtimeArgs": ["--inspect-brk"],
|
|
"console": "integratedTerminal",
|
|
});
|
|
|
|
Some(DebugScenario {
|
|
adapter: adapter.0.clone(),
|
|
label: resolved_label.to_string().into(),
|
|
build: None,
|
|
config,
|
|
tcp_connection: None,
|
|
})
|
|
}
|
|
|
|
async fn run(&self, _: SpawnInTerminal) -> Result<DebugRequest> {
|
|
bail!("JavaScript locator should not require DapLocator::run to be ran");
|
|
}
|
|
}
|