panres/src/main.rs

48 lines
1.2 KiB
Rust

#![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<Error>> {
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<Error>> {
println!("{}", template_engine.render(output_format, Context::new())?);
Ok(())
}