48 lines
1.2 KiB
Rust
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(())
|
|
}
|