#![forbid(unsafe_code)] #[macro_use] extern crate clap; extern crate tera; use clap::{App, AppSettings, Arg}; use std::error::Error; use tera::{Context, Tera}; fn main() -> Result<(), Box> { let tera = Tera::new("templates/**/*")?; let output_opts = &["all", "latex", "html"]; let matches = App::new("panres") .version(crate_version!()) .author(crate_authors!()) .about("Universal resume formatter") .arg( Arg::with_name("output-format") .help("Specifies which output format you want") .possible_values(output_opts) .multiple(true), ) .settings(&[AppSettings::ArgRequiredElseHelp]) .get_matches(); let outputs = matches.values_of("output-format").unwrap(); if outputs.clone().any(|e| e == "all") { for output in output_opts { generate_outputs(&tera, output)?; } } else { for output in outputs { generate_outputs(&tera, &output)?; } } Ok(()) } fn generate_outputs(template_engine: &Tera, output_format: &str) -> Result<(), Box> { println!("{}", template_engine.render(output_format, Context::new())?); Ok(()) }