Skip to main content

gobby_code/
output.rs

1use clap::ValueEnum;
2use serde::Serialize;
3
4#[derive(Clone, Copy, Debug, ValueEnum)]
5pub enum Format {
6    Json,
7    Text,
8}
9
10/// Print a serializable value to stdout in the requested format.
11pub fn print_json<T: Serialize + ?Sized>(value: &T) -> anyhow::Result<()> {
12    println!("{}", serde_json::to_string_pretty(value)?);
13    Ok(())
14}
15
16/// Print a serializable value to stdout as compact JSON.
17pub fn print_json_compact<T: Serialize + ?Sized>(value: &T) -> anyhow::Result<()> {
18    println!("{}", serde_json::to_string(value)?);
19    Ok(())
20}
21
22/// Print a plain text command result to stdout.
23pub fn print_text(text: &str) -> anyhow::Result<()> {
24    println!("{text}");
25    Ok(())
26}