use anyhow::Result; use std::fs::write; use std::path::PathBuf; use structopt::StructOpt; use subplot::Style; mod cli; #[derive(Debug, StructOpt)] #[structopt(name = "sp-meta", about = "Show Subplot document metadata.")] struct Opt { /// Input subplot document filename #[structopt(parse(from_os_str))] filename: PathBuf, /// Names of embedded files to be extracted. #[structopt()] embedded: Vec, // Set output directory. #[structopt(name = "DIR", long = "--directory", short = "-d", parse(from_os_str))] directory: PathBuf, } fn main() -> Result<()> { let opt = Opt::from_args(); let doc = cli::load_document(&opt.filename, Style::default())?; for filename in opt.embedded { let file = cli::extract_file(&doc, &filename)?; let output = opt.directory.join(filename); write(output, file.contents())?; } Ok(()) }