use introspection_core::read_middleware_load_report;
use crate::constants::DEFAULT_LOAD_REPORT_PATH;
use crate::demo::capture_demo_report;
use crate::helpers::{has_flag, parse_report_path, print_human};
pub fn middleware_load(args: &[String]) -> Result<(), String> {
let report_path = parse_report_path(args, DEFAULT_LOAD_REPORT_PATH)?;
let json = has_flag(args, "--json");
let refresh_demo = has_flag(args, "--refresh-demo");
if refresh_demo {
capture_demo_report(&report_path).map_err(|err| {
format!(
"refresh demo report to {} failed: {err}",
report_path.display()
)
})?;
}
let report = read_middleware_load_report(&report_path).map_err(|err| {
format!(
"read middleware load report from {} failed: {err}. Hint: run `cargo run -p local-loop` first, or pass --refresh-demo.",
report_path.display()
)
})?;
if json {
let payload = serde_json::to_string_pretty(&report)
.map_err(|err| format!("serialize report to json failed: {err}"))?;
println!("{payload}");
} else {
print_human(&report, &report_path);
}
Ok(())
}
pub fn middleware_capture_demo(args: &[String]) -> Result<(), String> {
let report_path = parse_report_path(args, DEFAULT_LOAD_REPORT_PATH)?;
capture_demo_report(&report_path).map_err(|err| {
format!(
"capture demo report to {} failed: {err}",
report_path.display()
)
})?;
println!("captured demo middleware load: {}", report_path.display());
Ok(())
}