use anyhow::{Context, Result};
use owo_colors::OwoColorize;
use std::fs;
use std::path::Path;
use kx_fides_core::manifest::read_manifest;
use super::ManifestShowArgs;
pub fn run(args: ManifestShowArgs) -> Result<()> {
let path = args.manifest;
if !Path::new(&path).exists() {
anyhow::bail!("manifest file not found: {}", path.display());
}
let m = read_manifest(&path)
.with_context(|| format!("failed to read manifest {}", path.display()))?;
let raw = fs::read(&path)?;
let pretty: serde_json::Value = serde_json::from_slice(&raw)?;
println!("{}", serde_json::to_string_pretty(&pretty)?);
println!(
"\n{} {}",
"✓ manifest is valid →".green().bold(),
path.display()
);
println!("{} {}", "media:".cyan(), m.media.name);
println!("{} {}", "size:".cyan(), m.media.size);
println!("{} {}", "hash:".cyan(), m.media.hash_value);
println!("{} {}", "alg:".cyan(), m.media.hash_alg);
Ok(())
}