fix(cli): correct output messages for state load and path-based actions (#109)

* Add files via upload

fix(cli): correct output messages for state load and path-based actions

* Add files via upload

* Update output.rs

* fix crlf

---------

Co-authored-by: Chris Tate <chris@ctate.dev>
This commit is contained in:
TimWhite
2026-01-22 10:43:27 -06:00
committed by GitHub
co-authored by Chris Tate
parent f74924cd0c
commit ea17db8564
2 changed files with 41 additions and 9 deletions
+6 -2
View File
@@ -408,10 +408,14 @@ fn main() {
} }
} }
match send_command(cmd, &flags.session) { match send_command(cmd.clone(), &flags.session) {
Ok(resp) => { Ok(resp) => {
let success = resp.success; let success = resp.success;
print_response(&resp, flags.json); // Extract action for context-specific output handling
let action = cmd
.get("action")
.and_then(|v| v.as_str());
print_response(&resp, flags.json, action);
if !success { if !success {
exit(1); exit(1);
} }
+35 -7
View File
@@ -1,7 +1,7 @@
use crate::color; use crate::color;
use crate::connection::Response; use crate::connection::Response;
pub fn print_response(resp: &Response, json_mode: bool) { pub fn print_response(resp: &Response, json_mode: bool, action: Option<&str>) {
if json_mode { if json_mode {
println!("{}", serde_json::to_string(resp).unwrap_or_default()); println!("{}", serde_json::to_string(resp).unwrap_or_default());
return; return;
@@ -135,7 +135,7 @@ pub fn print_response(resp: &Response, json_mode: bool) {
// Cleared requests // Cleared requests
if let Some(cleared) = data.get("cleared").and_then(|v| v.as_bool()) { if let Some(cleared) = data.get("cleared").and_then(|v| v.as_bool()) {
if cleared { if cleared {
println!("\x1b[32m✓\x1b[0m Request log cleared"); println!("{} Request log cleared", color::success_indicator());
return; return;
} }
} }
@@ -235,16 +235,44 @@ pub fn print_response(resp: &Response, json_mode: bool) {
return; return;
} }
} }
// Screenshot path (no "started", "frames", or download fields)
if let Some(path) = data.get("path").and_then(|v| v.as_str()) {
println!("{} Screenshot saved to {}", color::success_indicator(), color::green(path));
return;
}
// Screenshot base64 // Screenshot base64
if let Some(base64) = data.get("base64").and_then(|v| v.as_str()) { if let Some(base64) = data.get("base64").and_then(|v| v.as_str()) {
println!("{}", base64); println!("{}", base64);
return; return;
} }
// Path-based operations (screenshot/pdf/trace/har/download/state/video)
if let Some(path) = data.get("path").and_then(|v| v.as_str()) {
match action.unwrap_or("") {
"screenshot" => println!("{} Screenshot saved to {}", color::success_indicator(), color::green(path)),
"pdf" => println!("{} PDF saved to {}", color::success_indicator(), color::green(path)),
"trace_stop" => println!("{} Trace saved to {}", color::success_indicator(), color::green(path)),
"har_stop" => println!("{} HAR saved to {}", color::success_indicator(), color::green(path)),
"download" | "waitfordownload" => println!("{} Download saved to {}", color::success_indicator(), color::green(path)),
"video_stop" => println!("{} Video saved to {}", color::success_indicator(), color::green(path)),
"state_save" => println!("{} State saved to {}", color::success_indicator(), color::green(path)),
"state_load" => {
if let Some(note) = data.get("note").and_then(|v| v.as_str()) {
println!("{}", note);
}
println!("{} State path set to {}", color::success_indicator(), color::green(path));
}
// video_start and other commands that provide a path with a note
"video_start" => {
if let Some(note) = data.get("note").and_then(|v| v.as_str()) {
println!("{}", note);
}
println!("Path: {}", path);
}
_ => println!("{} Saved to {}", color::success_indicator(), color::green(path)),
}
return;
}
// Informational note
if let Some(note) = data.get("note").and_then(|v| v.as_str()) {
println!("{}", note);
return;
}
// Default success // Default success
println!("{} Done", color::success_indicator()); println!("{} Done", color::success_indicator());
} }