1use serde::Serialize;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum Format {
5 Json,
6 Text,
7}
8
9impl Format {
10 pub fn from_str_opt(s: Option<&str>) -> Self {
11 match s {
12 Some("text") => Format::Text,
13 _ => Format::Json,
14 }
15 }
16}
17
18pub fn print_json<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
19 let json = serde_json::to_string(value)?;
20 println!("{json}");
21 Ok(())
22}
23
24pub fn print_json_pretty<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
25 let json = serde_json::to_string_pretty(value)?;
26 println!("{json}");
27 Ok(())
28}
29
30pub fn eprint_json<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
31 let json = serde_json::to_string(value)?;
32 eprintln!("{json}");
33 Ok(())
34}
35
36pub fn eprint_json_pretty<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
37 let json = serde_json::to_string_pretty(value)?;
38 eprintln!("{json}");
39 Ok(())
40}