printwell-cli 0.1.11

Command-line tool for HTML to PDF conversion
Documentation
//! Info command implementation.

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());

        // Basic PDF info from header
        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(())
}