fixed `cargo build --features=regenerate-css` on windows 10

also added cargo build --features=regenerate-css to appveyor.yml
This commit is contained in:
Michal Budzynski 2017-06-20 10:09:20 +02:00
parent a1926bbe8e
commit d0a6aea3aa
2 changed files with 22 additions and 9 deletions

View File

@ -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:

View File

@ -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)