Missing backends are no longer fatal
This commit is contained in:
parent
1fbad982d8
commit
bda23f0183
|
@ -16,7 +16,7 @@ pub use self::html_handlebars::HtmlHandlebars;
|
||||||
mod html_handlebars;
|
mod html_handlebars;
|
||||||
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::Read;
|
use std::io::{self, Read};
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::process::{Command, Stdio};
|
use std::process::{Command, Stdio};
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
@ -155,13 +155,22 @@ impl Renderer for CmdRenderer {
|
||||||
|
|
||||||
let _ = fs::create_dir_all(&ctx.destination);
|
let _ = fs::create_dir_all(&ctx.destination);
|
||||||
|
|
||||||
let mut child = self.compose_command()?
|
let mut child = match self.compose_command()?
|
||||||
.stdin(Stdio::piped())
|
.stdin(Stdio::piped())
|
||||||
.stdout(Stdio::inherit())
|
.stdout(Stdio::inherit())
|
||||||
.stderr(Stdio::inherit())
|
.stderr(Stdio::inherit())
|
||||||
.current_dir(&ctx.destination)
|
.current_dir(&ctx.destination)
|
||||||
.spawn()
|
.spawn() {
|
||||||
.chain_err(|| "Unable to start the renderer")?;
|
Ok(c) => c,
|
||||||
|
Err(ref e) if e.kind() == io::ErrorKind::NotFound => {
|
||||||
|
warn!("The command wasn't found, is the \"{}\" backend installed?", self.name);
|
||||||
|
warn!("\tCommand: {}", self.cmd);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
return Err(e).chain_err(|| "Unable to start the backend")?;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut stdin = child.stdin.take().expect("Child has stdin");
|
let mut stdin = child.stdin.take().expect("Child has stdin");
|
||||||
|
|
|
@ -24,6 +24,13 @@ fn failing_alternate_backend() {
|
||||||
md.build().unwrap_err();
|
md.build().unwrap_err();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn missing_backends_arent_fatal() {
|
||||||
|
let (md, _temp) = dummy_book_with_backend("missing", "trduyvbhijnorgevfuhn");
|
||||||
|
|
||||||
|
assert!(md.build().is_ok());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn alternate_backend_with_arguments() {
|
fn alternate_backend_with_arguments() {
|
||||||
let (md, _temp) = dummy_book_with_backend("arguments", "echo Hello World!");
|
let (md, _temp) = dummy_book_with_backend("arguments", "echo Hello World!");
|
||||||
|
|
Loading…
Reference in New Issue