env hook for output dir
This commit is contained in:
parent
3803747c64
commit
95d450bf5c
1 changed files with 9 additions and 7 deletions
16
src/main.rs
16
src/main.rs
|
@ -26,6 +26,7 @@ fn main() -> Result<(), Box<Error>> {
|
||||||
let config: Value = from_str(&read_to_string("config.json")?)?;
|
let config: Value = from_str(&read_to_string("config.json")?)?;
|
||||||
let template_dir =
|
let template_dir =
|
||||||
&env::var("PANRES_TEMPLATE_DIR").unwrap_or_else(|_| String::from(DEFAULT_TEMPLATE_DIR));
|
&env::var("PANRES_TEMPLATE_DIR").unwrap_or_else(|_| String::from(DEFAULT_TEMPLATE_DIR));
|
||||||
|
let output_dir = &env::var("PANRES_OUTPUT_DIR").unwrap_or_else(|_| String::from(DEFAULT_OUTPUT_DIR));
|
||||||
|
|
||||||
let matches = App::new("panres")
|
let matches = App::new("panres")
|
||||||
.version(crate_version!())
|
.version(crate_version!())
|
||||||
|
@ -61,7 +62,7 @@ fn main() -> Result<(), Box<Error>> {
|
||||||
| Ok(notify::DebouncedEvent::Rename(_, msg)) => {
|
| Ok(notify::DebouncedEvent::Rename(_, msg)) => {
|
||||||
println!("Reloading: {:?}", msg);
|
println!("Reloading: {:?}", msg);
|
||||||
tera.full_reload()?;
|
tera.full_reload()?;
|
||||||
output(tera, context, outputs.clone(), template_dir)?;
|
output(tera, context, output_dir, outputs.clone(), template_dir)?;
|
||||||
},
|
},
|
||||||
Ok(notify::DebouncedEvent::Rescan) => {
|
Ok(notify::DebouncedEvent::Rescan) => {
|
||||||
println!("notify emitted rescan event!");
|
println!("notify emitted rescan event!");
|
||||||
|
@ -71,33 +72,34 @@ fn main() -> Result<(), Box<Error>> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output(tera, context, outputs, template_dir)?;
|
output(tera, context, output_dir, outputs, template_dir)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn output<'a>(
|
fn output<'a>(
|
||||||
engine: &Tera,
|
engine: &Tera,
|
||||||
context: &Context,
|
context: &Context,
|
||||||
|
dir: &str,
|
||||||
outputs: Values,
|
outputs: Values,
|
||||||
template_dir: &'a str,
|
template_dir: &'a str,
|
||||||
) -> Result<(), Box<Error>> {
|
) -> Result<(), Box<Error>> {
|
||||||
if outputs.clone().any(|e| e == "all") {
|
if outputs.clone().any(|e| e == "all") {
|
||||||
for output in read_dir(template_dir)? {
|
for output in read_dir(template_dir)? {
|
||||||
generate_output(engine, context, &output?.file_name().to_str().unwrap())?;
|
generate_output(engine, context, dir, &output?.file_name().to_str().unwrap())?;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for output in outputs {
|
for output in outputs {
|
||||||
generate_output(engine, context, &output)?;
|
generate_output(engine, context, dir, &output)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_output(engine: &Tera, context: &Context, format: &str) -> Result<(), Box<Error>> {
|
fn generate_output(engine: &Tera, context: &Context, dir: &str, format: &str) -> Result<(), Box<Error>> {
|
||||||
create_dir_all(DEFAULT_OUTPUT_DIR).expect("Could not create output dir");
|
create_dir_all(dir).expect("Could not create output dir");
|
||||||
write(
|
write(
|
||||||
format!("{}/{}", DEFAULT_OUTPUT_DIR, format),
|
format!("{}/{}", dir, format),
|
||||||
engine.render(format, context.clone())?,
|
engine.render(format, context.clone())?,
|
||||||
)
|
)
|
||||||
.expect("to be able to write to output folder");
|
.expect("to be able to write to output folder");
|
||||||
|
|
Loading…
Reference in a new issue