tranc-cli 0.1.1

Tranc CLI — trade indicator queries from the command line.
//! Output helpers.
//!
//! Default output is raw JSON for LLM piping.
//! `--pretty` enables colored, indented JSON.

use anyhow::Result;

/// Print a `serde_json::Value` to stdout.
///
/// When `pretty = true`, outputs indented + colored JSON.
/// When `pretty = false`, outputs compact JSON (default — LLM-friendly).
pub fn print_json(value: &serde_json::Value, pretty: bool) -> Result<()> {
    if pretty {
        let s = serde_json::to_string_pretty(value)?;
        // colored_json adds ANSI colors when the terminal supports it.
        println!(
            "{}",
            colored_json::to_colored_json_auto(&serde_json::from_str::<serde_json::Value>(&s)?)?
        );
    } else {
        println!("{}", serde_json::to_string(value)?);
    }
    Ok(())
}

/// Print a raw JSON string to stdout (already serialized).
#[allow(dead_code)]
pub fn print_raw(s: &str, pretty: bool) -> Result<()> {
    if pretty {
        let v: serde_json::Value = serde_json::from_str(s)?;
        print_json(&v, true)
    } else {
        println!("{s}");
        Ok(())
    }
}