use std::path::Path;
use crate::compare::Comparable;
use crate::utils::rich::display_rich;
use crate::{
alert_format, alert_format_if, color_format_if, utils::rich::RichTable, warn_format,
warn_format_if,
};
use colored::Colorize;
use exe::VecPE;
use serde::{Deserialize, Serialize};
use std::fmt::Write as _;
use std::io::Write as _;
use std::io::{stdout, Write};
#[derive(Serialize, Deserialize)]
struct RichInformation {
filename: String,
table: RichTable,
}
pub fn rich_cmd(pe_filepaths: &Vec<String>, json_output: bool) {
let mut x: Vec<RichInformation> = vec![];
for file in pe_filepaths {
let Ok(image) = VecPE::from_disk_file(file) else {
println!("{}", alert_format!(format!("Could not read {}", file)));
continue;
};
let richs = RichTable::parse(&image);
if json_output {
write!(stdout(), "{}\n", serde_json::to_string(&richs).unwrap());
} else {
write!(stdout(), "{}\n", richs);
}
}
}