use clap::ValueEnum;
use serde_json::Value;
#[derive(ValueEnum, Debug, Clone, Copy, Default, PartialEq, Eq)]
pub enum Format {
#[default]
Human,
Json,
}
pub fn emit(document: &Value) {
println!(
"{}",
serde_json::to_string_pretty(document).expect("a serde_json::Value is serializable")
);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn the_default_format_is_human() {
assert_eq!(Format::default(), Format::Human);
}
#[test]
fn the_cli_spellings_are_human_and_json() {
assert_eq!(
Format::value_variants()
.iter()
.map(|f| f.to_possible_value().unwrap().get_name().to_string())
.collect::<Vec<_>>(),
["human", "json"]
);
}
}