use lupin::operations::{embed, extract};
use std::env;
use std::io;
use std::path::Path;
fn print_usage(program_name: &str) {
eprintln!(
"Usage:\n\
{0} embed <source.pdf> <payload.bin> <output.pdf>\n\
{0} extract <pdf-with-payload.pdf> <output.bin>\n",
program_name
);
}
fn main() -> io::Result<()> {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
print_usage(&args[0]);
std::process::exit(1);
}
match args[1].as_str() {
"embed" => {
if args.len() != 5 {
eprintln!("Error: embed expects three arguments.");
print_usage(&args[0]);
std::process::exit(1);
}
let (src_pdf, payload, out_pdf) = (
Path::new(&args[2]),
Path::new(&args[3]),
Path::new(&args[4]),
);
embed(src_pdf, payload, out_pdf)?;
}
"extract" => {
if args.len() != 4 {
eprintln!("Error: extract expects two arguments.");
print_usage(&args[0]);
std::process::exit(1);
}
let (src_pdf, out_bin) = (Path::new(&args[2]), Path::new(&args[3]));
extract(src_pdf, out_bin)?;
}
_ => {
eprintln!("Error: unknown sub‑command '{}'.", args[1]);
print_usage(&args[0]);
std::process::exit(1);
}
}
Ok(())
}