dap: move launch request argumets outside of client

pull/574/head
Dmitry Sharshakov 3 years ago committed by Blaž Hrastnik
parent 3d64cf8356
commit 6bb653f820

@ -1,4 +1,12 @@
use helix_dap::{Client, Result, SourceBreakpoint}; use helix_dap::{Client, Result, SourceBreakpoint};
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
struct LaunchArguments {
mode: String,
program: String,
}
#[tokio::main] #[tokio::main]
pub async fn main() -> Result<()> { pub async fn main() -> Result<()> {
@ -19,9 +27,15 @@ pub async fn main() -> Result<()> {
println!("init: {:?}", client.initialize("go".to_owned()).await); println!("init: {:?}", client.initialize("go".to_owned()).await);
println!("caps: {:#?}", client.capabilities()); println!("caps: {:#?}", client.capabilities());
let args = LaunchArguments {
mode: "exec".to_owned(),
program: "/tmp/godebug/main".to_owned(),
};
println!( println!(
"launch: {:?}", "launch: {:?}",
client.launch("/tmp/godebug/main".to_owned()).await client.launch(serde_json::to_value(args)?).await
); );
println!( println!(

@ -45,14 +45,6 @@ struct InitializeArguments {
supports_invalidated_event: bool, supports_invalidated_event: bool,
} }
// TODO: split out, as it's a debugger-specific payload not covered by standard
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
struct LaunchArguments {
mode: String,
program: String,
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct Checksum { pub struct Checksum {
@ -380,14 +372,8 @@ impl Client {
Ok(()) Ok(())
} }
pub async fn launch(&mut self, executable: String) -> Result<()> { pub async fn launch(&mut self, args: Value) -> Result<()> {
let args = LaunchArguments { self.request("launch".to_owned(), Some(args)).await?;
mode: "exec".to_owned(),
program: executable,
};
self.request("launch".to_owned(), to_value(args).ok())
.await?;
match self match self
.server_rx .server_rx

Loading…
Cancel
Save