diff --git a/appveyor.yml b/appveyor.yml index f309c090..6ab52500 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,7 @@ environment: global: PROJECT_NAME: mdBook + nodejs_version: "6" matrix: # Stable channel - TARGET: i686-pc-windows-msvc @@ -31,12 +32,17 @@ install: - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin - rustc -Vv - cargo -V + - ps: Install-Product node $env:nodejs_version + - node --version + - npm --version + - npm install -g stylus nib build: false # Equivalent to Travis' `script` phase test_script: - cargo build --verbose + - cargo build --verbose --features=regenerate-css - cargo test --verbose before_deploy: diff --git a/build.rs b/build.rs index 9d45b3de..261a7f2e 100644 --- a/build.rs +++ b/build.rs @@ -1,6 +1,5 @@ // build.rs -use std::process::Command; use std::env; use std::path::Path; #[macro_use] @@ -8,13 +7,21 @@ extern crate error_chain; #[cfg(windows)] mod execs { - pub const NPM: &'static str = "npm.cmd"; - pub const STYLUS: &'static str = "stylus.cmd"; + use std::process::Command; + + pub fn cmd(program: &str) -> Command { + let mut cmd = Command::new("cmd"); + cmd.args(&["/c", program]); + cmd + } } #[cfg(not(windows))] mod execs { - pub const NPM: &'static str = "npm"; - pub const STYLUS: &'static str = "stylus"; + use std::process::Command; + + pub fn cmd(program: &str) -> Command { + Command::new(program) + } } @@ -25,7 +32,7 @@ error_chain!{ } fn program_exists(program: &str) -> Result<()> { - Command::new(program) + execs::cmd(program) .arg("-v") .output() .chain_err(|| format!("Please install '{}'!", program))?; @@ -33,7 +40,7 @@ fn program_exists(program: &str) -> Result<()> { } fn npm_package_exists(package: &str) -> Result<()> { - let status = Command::new(execs::NPM) + let status = execs::cmd("npm") .args(&["list", "-g"]) .arg(package) .output(); @@ -67,7 +74,7 @@ fn run() -> Result<()> { if let Ok(_) = env::var("CARGO_FEATURE_REGENERATE_CSS") { // Check dependencies - Program(execs::NPM).exists()?; + Program("npm").exists()?; Program("node").exists().or(Program("nodejs").exists())?; Package("nib").exists()?; Package("stylus").exists()?; @@ -78,7 +85,7 @@ fn run() -> Result<()> { let theme_dir = Path::new(&manifest_dir).join("src/theme/"); let stylus_dir = theme_dir.join("stylus/book.styl"); - if !Command::new(execs::STYLUS) + if !execs::cmd("stylus") .arg(stylus_dir) .arg("--out") .arg(theme_dir)