From 4f2b8fb05a391fb42d2accb0b8de1f89b0d13480 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Sat, 14 Aug 2021 13:31:48 +0300 Subject: dap-dlv: rename from dap-go --- helix-dap/examples/dap-dlv.rs | 110 ++++++++++++++++++++++++++++++++++++++++++ helix-dap/examples/dap-go.rs | 110 ------------------------------------------ 2 files changed, 110 insertions(+), 110 deletions(-) create mode 100644 helix-dap/examples/dap-dlv.rs delete mode 100644 helix-dap/examples/dap-go.rs (limited to 'helix-dap') diff --git a/helix-dap/examples/dap-dlv.rs b/helix-dap/examples/dap-dlv.rs new file mode 100644 index 00000000..de8c2e02 --- /dev/null +++ b/helix-dap/examples/dap-dlv.rs @@ -0,0 +1,110 @@ +use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint, StoppedEventBody}; +use serde::{Deserialize, Serialize}; +use serde_json::from_value; +use tokio::sync::mpsc::Receiver; + +#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +struct LaunchArguments { + mode: String, + program: String, +} + +async fn output(mut output_event: Receiver) { + let body: OutputEventBody = + from_value(output_event.recv().await.unwrap().body.unwrap()).unwrap(); + println!( + "> [{}] {}", + body.category.unwrap_or("unknown".to_owned()), + body.output + ); +} + +#[tokio::main] +pub async fn main() -> Result<()> { + let base_config = fern::Dispatch::new().level(log::LevelFilter::Info); + + let stderr_config = fern::Dispatch::new() + .format(|out, message, record| out.finish(format_args!("[{}] {}", record.level(), message))) + .chain(std::io::stderr()); + + base_config + .chain(stderr_config) + .apply() + .expect("Failed to set up logging"); + + let client = Client::tcp("127.0.0.1:7777".parse::().unwrap(), 0).await; + println!("create: {:?}", client); + let mut client = client?; + + let output_event = client.listen_for_event("output".to_owned()).await; + tokio::spawn(output(output_event)); + + println!("init: {:?}", client.initialize("go".to_owned()).await); + println!("caps: {:?}", client.capabilities()); + + let args = LaunchArguments { + mode: "exec".to_owned(), + program: "/tmp/godebug/main".to_owned(), + }; + + println!("launch: {:?}", client.launch(args).await); + + println!( + "breakpoints: {:#?}", + client + .set_breakpoints( + "/tmp/godebug/main.go".to_owned(), + vec![SourceBreakpoint { + line: 8, + column: Some(2), + condition: None, + hit_condition: None, + log_message: None, + }] + ) + .await + ); + + let mut _in = String::new(); + std::io::stdin() + .read_line(&mut _in) + .expect("Failed to read line"); + + let mut stopped_event = client.listen_for_event("stopped".to_owned()).await; + + println!("configurationDone: {:?}", client.configuration_done().await); + + let stop: StoppedEventBody = + from_value(stopped_event.recv().await.unwrap().body.unwrap()).unwrap(); + println!("stopped: {:?}", stop); + + println!("threads: {:#?}", client.threads().await); + let bt = client.stack_trace(1).await.expect("expected stack trace"); + println!("stack trace: {:#?}", bt); + let scopes = client + .scopes(bt.0[0].id) + .await + .expect("expected scopes for thread"); + println!("scopes: {:#?}", scopes); + println!( + "vars: {:#?}", + client.variables(scopes[1].variables_reference).await + ); + + let mut _in = String::new(); + std::io::stdin() + .read_line(&mut _in) + .expect("Failed to read line"); + + println!("continued: {:?}", client.continue_thread(0).await); + + let mut _in = String::new(); + std::io::stdin() + .read_line(&mut _in) + .expect("Failed to read line"); + + println!("disconnect: {:?}", client.disconnect().await); + + Ok(()) +} diff --git a/helix-dap/examples/dap-go.rs b/helix-dap/examples/dap-go.rs deleted file mode 100644 index de8c2e02..00000000 --- a/helix-dap/examples/dap-go.rs +++ /dev/null @@ -1,110 +0,0 @@ -use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint, StoppedEventBody}; -use serde::{Deserialize, Serialize}; -use serde_json::from_value; -use tokio::sync::mpsc::Receiver; - -#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -struct LaunchArguments { - mode: String, - program: String, -} - -async fn output(mut output_event: Receiver) { - let body: OutputEventBody = - from_value(output_event.recv().await.unwrap().body.unwrap()).unwrap(); - println!( - "> [{}] {}", - body.category.unwrap_or("unknown".to_owned()), - body.output - ); -} - -#[tokio::main] -pub async fn main() -> Result<()> { - let base_config = fern::Dispatch::new().level(log::LevelFilter::Info); - - let stderr_config = fern::Dispatch::new() - .format(|out, message, record| out.finish(format_args!("[{}] {}", record.level(), message))) - .chain(std::io::stderr()); - - base_config - .chain(stderr_config) - .apply() - .expect("Failed to set up logging"); - - let client = Client::tcp("127.0.0.1:7777".parse::().unwrap(), 0).await; - println!("create: {:?}", client); - let mut client = client?; - - let output_event = client.listen_for_event("output".to_owned()).await; - tokio::spawn(output(output_event)); - - println!("init: {:?}", client.initialize("go".to_owned()).await); - println!("caps: {:?}", client.capabilities()); - - let args = LaunchArguments { - mode: "exec".to_owned(), - program: "/tmp/godebug/main".to_owned(), - }; - - println!("launch: {:?}", client.launch(args).await); - - println!( - "breakpoints: {:#?}", - client - .set_breakpoints( - "/tmp/godebug/main.go".to_owned(), - vec![SourceBreakpoint { - line: 8, - column: Some(2), - condition: None, - hit_condition: None, - log_message: None, - }] - ) - .await - ); - - let mut _in = String::new(); - std::io::stdin() - .read_line(&mut _in) - .expect("Failed to read line"); - - let mut stopped_event = client.listen_for_event("stopped".to_owned()).await; - - println!("configurationDone: {:?}", client.configuration_done().await); - - let stop: StoppedEventBody = - from_value(stopped_event.recv().await.unwrap().body.unwrap()).unwrap(); - println!("stopped: {:?}", stop); - - println!("threads: {:#?}", client.threads().await); - let bt = client.stack_trace(1).await.expect("expected stack trace"); - println!("stack trace: {:#?}", bt); - let scopes = client - .scopes(bt.0[0].id) - .await - .expect("expected scopes for thread"); - println!("scopes: {:#?}", scopes); - println!( - "vars: {:#?}", - client.variables(scopes[1].variables_reference).await - ); - - let mut _in = String::new(); - std::io::stdin() - .read_line(&mut _in) - .expect("Failed to read line"); - - println!("continued: {:?}", client.continue_thread(0).await); - - let mut _in = String::new(); - std::io::stdin() - .read_line(&mut _in) - .expect("Failed to read line"); - - println!("disconnect: {:?}", client.disconnect().await); - - Ok(()) -} -- cgit v1.2.3-70-g09d2