diff --git a/CHANGELOG.md b/CHANGELOG.md index 4354654b..379f53e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Fix generated index section not found in `get_section` global function - Fix permalink generation for index page - Add Nim syntax highlighting +- Allow static folder to be missing ## 0.2.1 (2017-10-17) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index a088d7a3..da5a0b0b 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -431,7 +431,10 @@ impl Site { &self.base_path.join("themes").join(theme).join("static") )?; } - self.copy_static_directory(&self.static_path)?; + // We're fine with missing static folders + if self.static_path.exists() { + self.copy_static_directory(&self.static_path)?; + } Ok(()) } diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 10177536..b1fcfbc9 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -95,17 +95,22 @@ pub fn serve(interface: &str, port: &str, config_file: &str) -> Result<()> { console::warn_about_ignored_pages(&site); site.build()?; console::report_elapsed_time(start); + let mut watching_static = false; // Setup watchers let (tx, rx) = channel(); let mut watcher = watcher(tx, Duration::from_secs(2)).unwrap(); watcher.watch("content/", RecursiveMode::Recursive) .chain_err(|| "Can't watch the `content` folder. Does it exist?")?; - watcher.watch("static/", RecursiveMode::Recursive) - .chain_err(|| "Can't watch the `static` folder. Does it exist?")?; watcher.watch("templates/", RecursiveMode::Recursive) .chain_err(|| "Can't watch the `templates` folder. Does it exist?")?; + if Path::new("static").exists() { + watching_static = true; + watcher.watch("static/", RecursiveMode::Recursive) + .chain_err(|| "Can't watch the `static` folder. Does it exist?")?; + } + // Sass support is optional so don't make it an error to no have a sass folder let _ = watcher.watch("sass/", RecursiveMode::Recursive); @@ -142,11 +147,15 @@ pub fn serve(interface: &str, port: &str, config_file: &str) -> Result<()> { let pwd = format!("{}", env::current_dir().unwrap().display()); - if site.config.compile_sass.unwrap() { - println!("Listening for changes in {}/{{content, static, templates, sass}}", pwd); - } else { - println!("Listening for changes in {}/{{content, static, templates}}", pwd); + let mut watchers = vec!["content", "templates"]; + if watching_static { + watchers.push("static"); } + if site.config.compile_sass.unwrap() { + watchers.push("sass"); + } + + println!("Listening for changes in {}/{{{}}}", pwd, watchers.join(", ")); println!("Web server is available at http://{}", address); println!("Press Ctrl+C to stop\n");