diff --git a/Cargo.lock b/Cargo.lock index 46007d537..3030d8317 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -737,7 +737,7 @@ dependencies = [ "ansi_term", "atty", "bytes", - "dap-types", + "debug_types", "futures", "getrandom 0.2.6", "httparse", diff --git a/src/bin.rs b/src/bin.rs index d570ea907..171840b4a 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -20,7 +20,6 @@ mod generate; mod indexer; mod integrate; mod lsp; -mod dap; mod poke; mod publish; mod runnner; diff --git a/src/frontend/cli.rs b/src/frontend/cli.rs index d42f96e7d..0cbc70920 100644 --- a/src/frontend/cli.rs +++ b/src/frontend/cli.rs @@ -4,7 +4,6 @@ use std::io::{prelude::*, BufReader, Read}; use std::path::PathBuf; use std::{env, process}; -use crate::dap::run_dap; use crate::generate::{ self, changes::{Changes, TOMLEdition}, @@ -668,7 +667,7 @@ pub fn main() { } } Command::LSP => run_lsp(), - Command::DAP => match run_dap() { + Command::DAP => match super::dap::run_dap() { Ok(_) => (), Err(e) => { println!("{}: {}", red!("error"), e); diff --git a/src/dap/mod.rs b/src/frontend/dap.rs similarity index 56% rename from src/dap/mod.rs rename to src/frontend/dap.rs index db00131f1..56c3983a4 100644 --- a/src/dap/mod.rs +++ b/src/frontend/dap.rs @@ -3,18 +3,32 @@ use crate::types::Network; use clarity_repl::clarity::debug::dap::DAPDebugger; use std::path::PathBuf; +#[cfg(feature = "telemetry")] +use super::telemetry::{telemetry_report_event, DeveloperUsageDigest, DeveloperUsageEvent}; + pub fn run_dap() -> Result<(), String> { let mut dap = DAPDebugger::new(); match dap.init() { Ok((manifest, expression)) => { let manifest_path = PathBuf::from(manifest); - let mut session = match load_session(&manifest_path, false, &Network::Devnet) { - Ok((session, _, _, _)) => session, - Err((_, e)) => { - println!("{}: unable to load session: {}", red!("error"), e); - std::process::exit(1); - } - }; + let (mut session, project_manifest) = + match load_session(&manifest_path, false, &Network::Devnet) { + Ok((session, _, project_manifest, _)) => (session, project_manifest), + Err((_, e)) => { + println!("{}: unable to load session: {}", red!("error"), e); + std::process::exit(1); + } + }; + + if project_manifest.project.telemetry { + #[cfg(feature = "telemetry")] + telemetry_report_event(DeveloperUsageEvent::DAPDebugStarted( + DeveloperUsageDigest::new( + &project_manifest.project.name, + &project_manifest.project.authors, + ), + )); + } for contract in &session.settings.initial_contracts { dap.path_to_contract_id.insert( diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs index 23bb30c49..ac917a0ef 100644 --- a/src/frontend/mod.rs +++ b/src/frontend/mod.rs @@ -1,3 +1,4 @@ pub mod cli; +pub mod dap; #[cfg(feature = "telemetry")] mod telemetry; diff --git a/src/frontend/telemetry.rs b/src/frontend/telemetry.rs index 2f968e7e9..079d32792 100644 --- a/src/frontend/telemetry.rs +++ b/src/frontend/telemetry.rs @@ -15,6 +15,7 @@ pub enum DeveloperUsageEvent { DevnetExecuted(DeveloperUsageDigest), ContractPublished(DeveloperUsageDigest, Network), DebugStarted(DeveloperUsageDigest, u32), + DAPDebugStarted(DeveloperUsageDigest), UnknownCommand(DeveloperUsageDigest, String), } @@ -121,6 +122,15 @@ async fn send_event(event: DeveloperUsageEvent) { "sessions": num_sessions, }), ), + DeveloperUsageEvent::DAPDebugStarted(digest) => ( + "DAPDebugStarted", + json!({ + "project_id": digest.project_id, + "team_id": digest.team_id, + "clarinet_version": clarinet_version, + "ci_mode": ci_mode, + }), + ), DeveloperUsageEvent::UnknownCommand(digest, command) => ( "UnknownCommand", json!({