@@ -1,125 +0,0 @@
1−use helix_dap::{events, Client, Event, Payload, Result, SourceBreakpoint, ThreadId};
2−use serde::{Deserialize, Serialize};
3−use serde_json::to_value;
4−use tokio::sync::mpsc::UnboundedReceiver;
6−#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
7−#[serde(rename_all = "camelCase")]
8−struct LaunchArguments {
13−async fn dispatch(mut rx: UnboundedReceiver<Payload>) {
15− match rx.recv().await.unwrap() {
16− Payload::Event(Event::Output(events::Output {
21− category.unwrap_or("unknown".to_owned()),
25− Payload::Event(Event::Stopped(_)) => {
34−pub async fn main() -> Result<()> {
35− let base_config = fern::Dispatch::new().level(log::LevelFilter::Info);
37− let stderr_config = fern::Dispatch::new()
38− .format(|out, message, record| out.finish(format_args!("[{}] {}", record.level(), message)))
39− .chain(std::io::stderr());
42− .chain(stderr_config)
44− .expect("Failed to set up logging");
46− let (mut client, events) =
47− Client::tcp_process("dlv", vec!["dap"], "-l 127.0.0.1:{}", 0).await?;
48− println!("create: {:?}", client);
50− tokio::spawn(dispatch(events));
52− println!("init: {:?}", client.initialize("go".to_owned()).await);
53− println!("caps: {:?}", client.capabilities());
55− let args = LaunchArguments {
56− mode: "exec".to_owned(),
57− program: "/tmp/godebug/main".to_owned(),
60− println!("launch: {:?}", client.launch(to_value(args)?).await);
63− "breakpoints: {:#?}",
66− "/tmp/godebug/main.go".into(),
67− vec![SourceBreakpoint {
78− let mut _in = String::new();
81− .expect("Failed to read line");
83− println!("configurationDone: {:?}", client.configuration_done().await);
85− let mut _in = String::new();
88− .expect("Failed to read line");
90− let threads = client.threads().await?;
91− println!("threads: {:#?}", threads);
93− .stack_trace(threads[0].id)
95− .expect("expected stack trace");
96− println!("stack trace: {:#?}", bt);
100− .expect("expected scopes for thread");
101− println!("scopes: {:#?}", scopes);
104− client.variables(scopes[1].variables_reference).await
107− let mut _in = String::new();
109− .read_line(&mut _in)
110− .expect("Failed to read line");
114− client.continue_thread(ThreadId::default()).await
117− let mut _in = String::new();
119− .read_line(&mut _in)
120− .expect("Failed to read line");
122− println!("disconnect: {:?}", client.disconnect().await);