diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e703b003..60711c96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,30 +48,6 @@ mdBook builds on stable Rust, if you want to build mdBook from source, here are The resulting binary can be found in `mdBook/target/debug/` under the name `mdBook` or `mdBook.exe`. - -### Making changes to the style - -mdBook doesn't use CSS directly but uses [Stylus](http://stylus-lang.com/), a CSS-preprocessor which compiles to CSS. - -When you want to change the style, it is important to not change the CSS directly because any manual modification to -the CSS files will be overwritten when compiling the stylus files. Instead, you should make your changes directly in the -[stylus files](https://github.com/rust-lang-nursery/mdBook/tree/master/src/theme/stylus) and regenerate the CSS. - -For this to work, you first need [Node and NPM](https://nodejs.org/en/) installed on your machine. -Then run the following command to install both [stylus](http://stylus-lang.com/) and [nib](https://tj.github.io/nib/), you might need `sudo` to install successfully. - -``` -npm install -g stylus nib -``` - -When that finished, you can simply regenerate the CSS files by building mdBook with the following command: - -``` -cargo build --features=regenerate-css -``` - -This should automatically call the appropriate stylus command to recompile the files to CSS and include them in the project. - ### Making a pull-request When you feel comfortable that your changes could be integrated into mdBook, you can create a pull-request on GitHub. diff --git a/Cargo.toml b/Cargo.toml index b362a61e..03d885f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,11 +8,7 @@ repository = "https://github.com/rust-lang-nursery/mdBook" keywords = ["book", "gitbook", "rustbook", "markdown"] license = "MPL-2.0" readme = "README.md" -build = "build.rs" -exclude = [ - "book-example/*", - "src/theme/stylus/**", -] +exclude = ["book-example/*"] [dependencies] clap = "2.24" @@ -47,9 +43,6 @@ ws = { version = "0.7", optional = true} elasticlunr-rs = { version = "2.3", optional = true, default-features = false } ammonia = { version = "1.1", optional = true } -[build-dependencies] -error-chain = "0.12" - [dev-dependencies] select = "0.4" pretty_assertions = "0.5" @@ -60,7 +53,6 @@ pulldown-cmark-to-cmark = "1.1.0" default = ["output", "watch", "serve", "search"] debug = [] output = [] -regenerate-css = [] watch = ["notify"] serve = ["iron", "staticfile", "ws"] search = ["elasticlunr-rs", "ammonia"] diff --git a/appveyor.yml b/appveyor.yml index 6ab52500..f309c090 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,7 +1,6 @@ environment: global: PROJECT_NAME: mdBook - nodejs_version: "6" matrix: # Stable channel - TARGET: i686-pc-windows-msvc @@ -32,17 +31,12 @@ 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 deleted file mode 100644 index 13697491..00000000 --- a/build.rs +++ /dev/null @@ -1,100 +0,0 @@ -// build.rs - -use std::env; -use std::path::Path; -#[macro_use] -extern crate error_chain; - -#[cfg(windows)] -mod execs { - 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 { - use std::process::Command; - - pub fn cmd(program: &str) -> Command { - Command::new(program) - } -} - -error_chain!{ - foreign_links { - Io(std::io::Error); - } -} - -fn program_exists(program: &str) -> Result<()> { - execs::cmd(program) - .arg("-v") - .output() - .chain_err(|| format!("Please install '{}'!", program))?; - Ok(()) -} - -fn npm_package_exists(package: &str) -> Result<()> { - let status = execs::cmd("npm") - .args(&["list", "-g"]) - .arg(package) - .output(); - - match status { - Ok(ref out) if out.status.success() => Ok(()), - _ => bail!( - "Missing npm package '{0}' install with: 'npm -g install {0}'", - package - ), - } -} - -pub enum Resource<'a> { - Program(&'a str), - Package(&'a str), -} -use Resource::{Package, Program}; - -impl<'a> Resource<'a> { - pub fn exists(&self) -> Result<()> { - match *self { - Program(name) => program_exists(name), - Package(name) => npm_package_exists(name), - } - } -} - -fn run() -> Result<()> { - if let Ok(_) = env::var("CARGO_FEATURE_REGENERATE_CSS") { - // Check dependencies - Program("npm").exists()?; - Program("node").exists().or(Program("nodejs").exists())?; - Package("nib").exists()?; - Package("stylus").exists()?; - - // Compile stylus stylesheet to css - let manifest_dir = env::var("CARGO_MANIFEST_DIR") - .chain_err(|| "Please run the script with: 'cargo build'!")?; - let theme_dir = Path::new(&manifest_dir).join("src/theme/"); - let stylus_dir = theme_dir.join("stylus/book.styl"); - - if !execs::cmd("stylus") - .arg(stylus_dir) - .arg("--out") - .arg(theme_dir) - .arg("--use") - .arg("nib") - .status()? - .success() - { - bail!("Stylus encountered an error"); - } - } - Ok(()) -} - -quick_main!(run); diff --git a/ci/github_pages.sh b/ci/github_pages.sh index 040ab20a..ea8b95a3 100644 --- a/ci/github_pages.sh +++ b/ci/github_pages.sh @@ -11,9 +11,6 @@ if [ "$TRAVIS_PULL_REQUEST" != "false" ] || exit 0 fi -# Make sure we have the css dependencies -npm install -g stylus nib - NC='\033[39m' CYAN='\033[36m' GREEN='\033[32m' @@ -21,7 +18,7 @@ GREEN='\033[32m' rev=$(git rev-parse --short HEAD) echo -e "${CYAN}Running cargo doc${NC}" -cargo doc --features regenerate-css > /dev/null +cargo doc > /dev/null echo -e "${CYAN}Running mdbook build${NC}" cargo run -- build book-example/