use anyhow::{Context, Result};
use crate::cli::args::InfoArgs;
pub async fn info(args: InfoArgs) -> Result<()> {
if args.renderer {
let converter = printwell::Converter::new().context("Failed to create converter")?;
let info = converter
.info()
.await
.context("Failed to get renderer info")?;
println!("Renderer Information:");
println!(" Printwell version: {}", info.printwell_version);
println!(" Chromium version: {}", info.chromium_version);
println!(" Skia version: {}", info.skia_version);
println!(" Build config: {}", info.build_config);
}
if let Some(ref input) = args.input {
let pdf_data =
std::fs::read(input).with_context(|| format!("Failed to read input file: {input}"))?;
println!("\nPDF Information:");
println!(" File: {input}");
println!(" Size: {} bytes", pdf_data.len());
if pdf_data.starts_with(b"%PDF-") {
let version_end = pdf_data.iter().position(|&b| b == b'\n').unwrap_or(8);
let version = String::from_utf8_lossy(&pdf_data[5..version_end]);
println!(" PDF version: {version}");
}
}
if !args.renderer && args.input.is_none() {
println!("Use --renderer to show renderer info or provide a PDF file path.");
}
Ok(())
}