From b396a1bc20b00400b732f96ee9f4d984e856535c Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 24 Aug 2019 22:23:08 +0200 Subject: [PATCH] Add --drafts flag + rustfmt --- CHANGELOG.md | 4 +-- Cargo.lock | 8 +++--- components/config/src/config.rs | 2 +- components/front_matter/src/page.rs | 2 +- components/front_matter/src/section.rs | 2 +- components/imageproc/src/lib.rs | 2 +- components/library/src/pagination/mod.rs | 9 +++---- components/rendering/src/markdown.rs | 2 +- components/rendering/src/table_of_contents.rs | 26 +++++-------------- components/site/src/lib.rs | 21 ++++++++++++--- components/site/tests/site.rs | 7 +++-- components/templates/src/global_fns/mod.rs | 24 ++++++++++------- docs/content/documentation/content/page.md | 2 +- .../getting-started/cli-usage.md | 6 +++++ src/cli.rs | 14 ++++++++++ src/cmd/build.rs | 10 ++++++- src/cmd/check.rs | 10 ++++++- src/cmd/init.rs | 18 ++++++------- src/cmd/serve.rs | 24 +++++++++++++---- src/main.rs | 20 ++++++++++++-- 20 files changed, 141 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f49dcebc..43901148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Breaking -- Pages with draft=true are now only loaded/rendered in `zola serve` +- Add `--drafts` flag to `build`, `serve` and `check` to load drafts. Drafts are never loaded by default anymore ### Other - Add `--open` flag to open server URL in default browser @@ -17,7 +17,7 @@ - Taxonomies can now have the same name in multiple languages - `zola init` can now be create sites inside the current directory - Fix table of contents generation for deep heading levels -- Add `lang` in all templates context except sitemap, robots etc +- Add `lang` in all templates context except sitemap, robots - Add `lang` parameter to `get_taxonomy` and `get_taxonomy_url` - Rebuild whole site on changes in `themes` changes - Add one-dark syntax highlighting theme diff --git a/Cargo.lock b/Cargo.lock index b1da8eb6..dee5ad59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -249,7 +249,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "html5ever 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1334,7 +1334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "maplit" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1748,7 +1748,7 @@ name = "pest_meta" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3375,7 +3375,7 @@ dependencies = [ "checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" "checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" "checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -"checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" +"checksum maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" "checksum markup5ever 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "65381d9d47506b8592b97c4efd936afcf673b09b059f2bef39c7211ee78b9d03" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" diff --git a/components/config/src/config.rs b/components/config/src/config.rs index 44cbc117..0a1e1e2a 100644 --- a/components/config/src/config.rs +++ b/components/config/src/config.rs @@ -13,7 +13,7 @@ use theme::Theme; use utils::fs::read_file_with_error; // We want a default base url for tests -static DEFAULT_BASE_URL: &'static str = "http://a-website.com"; +static DEFAULT_BASE_URL: &str = "http://a-website.com"; #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum Mode { diff --git a/components/front_matter/src/page.rs b/components/front_matter/src/page.rs index 74f8299e..3d70ff18 100644 --- a/components/front_matter/src/page.rs +++ b/components/front_matter/src/page.rs @@ -24,7 +24,7 @@ pub struct PageFrontMatter { /// The converted date into a (year, month, day) tuple #[serde(default, skip_deserializing)] pub datetime_tuple: Option<(i32, u32, u32)>, - /// Whether this page is a draft and should be ignored for pagination etc + /// Whether this page is a draft pub draft: bool, /// The page slug. Will be used instead of the filename if present /// Can't be an empty string if present diff --git a/components/front_matter/src/section.rs b/components/front_matter/src/section.rs index db8ca8f1..ffbcaf22 100644 --- a/components/front_matter/src/section.rs +++ b/components/front_matter/src/section.rs @@ -7,7 +7,7 @@ use errors::Result; use super::{InsertAnchor, SortBy}; -static DEFAULT_PAGINATE_PATH: &'static str = "page"; +static DEFAULT_PAGINATE_PATH: &str = "page"; /// The front matter of every section #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] diff --git a/components/imageproc/src/lib.rs b/components/imageproc/src/lib.rs index 4708e96d..b1f5827b 100644 --- a/components/imageproc/src/lib.rs +++ b/components/imageproc/src/lib.rs @@ -23,7 +23,7 @@ use regex::Regex; use errors::{Error, Result}; use utils::fs as ufs; -static RESIZED_SUBDIR: &'static str = "processed_images"; +static RESIZED_SUBDIR: &str = "processed_images"; lazy_static! { pub static ref RESIZED_FILENAME: Regex = diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index f79dad30..d6091c4e 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -117,9 +117,6 @@ impl<'a> Paginator<'a> { for key in self.all_pages { let page = library.get_page_by_key(*key); - if page.is_draft() { - continue; - } current_page.push(page.to_serialized_basic(library)); if current_page.len() == self.paginate_by { @@ -283,7 +280,7 @@ mod tests { assert_eq!(paginator.pagers[0].path, "posts/"); assert_eq!(paginator.pagers[1].index, 2); - assert_eq!(paginator.pagers[1].pages.len(), 1); + assert_eq!(paginator.pagers[1].pages.len(), 2); assert_eq!(paginator.pagers[1].permalink, "https://vincent.is/posts/page/2/"); assert_eq!(paginator.pagers[1].path, "posts/page/2/"); } @@ -300,7 +297,7 @@ mod tests { assert_eq!(paginator.pagers[0].path, ""); assert_eq!(paginator.pagers[1].index, 2); - assert_eq!(paginator.pagers[1].pages.len(), 1); + assert_eq!(paginator.pagers[1].pages.len(), 2); assert_eq!(paginator.pagers[1].permalink, "https://vincent.is/page/2/"); assert_eq!(paginator.pagers[1].path, "page/2/"); } @@ -352,7 +349,7 @@ mod tests { assert_eq!(paginator.pagers[0].path, "tags/something"); assert_eq!(paginator.pagers[1].index, 2); - assert_eq!(paginator.pagers[1].pages.len(), 1); + assert_eq!(paginator.pagers[1].pages.len(), 2); assert_eq!(paginator.pagers[1].permalink, "https://vincent.is/tags/something/page/2/"); assert_eq!(paginator.pagers[1].path, "tags/something/page/2/"); } diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 9325c5cd..5d903730 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -317,7 +317,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result, header: &Header) -> match potential_parent { None => { // No potential parent to insert into so it needs to be insert higher - return false; - }, + false + } Some(parent) => { let diff = header.level - parent.level; if diff <= 0 { // Heading is same level or higher so we don't insert here return false; - } + } if diff == 1 { // We have a direct child of the parent parent.children.push(header.clone()); @@ -51,7 +51,7 @@ fn insert_into_parent(potential_parent: Option<&mut Header>, header: &Header) -> // No, we need to insert it here parent.children.push(header.clone()); } - return true; + true } } } @@ -61,23 +61,9 @@ fn insert_into_parent(potential_parent: Option<&mut Header>, header: &Header) -> pub fn make_table_of_contents(headers: Vec
) -> Vec
{ let mut toc = vec![]; for header in headers { - if toc.is_empty() { - // First header, nothing to compare it with + // First header or we try to insert the current header in a previous one + if toc.is_empty() || !insert_into_parent(toc.iter_mut().last(), &header) { toc.push(header); - continue; - } - - // We try to insert the current header in a previous one - match insert_into_parent(toc.iter_mut().last(), &header) { - true => { - // Header was successfully inserted as a child of a previous element - continue; - }, - false => { - // Couldn't insert in a previous header, so it's a top-level header - toc.push(header); - continue; - } } } diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index c7a0bf49..d1f1d06b 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -63,6 +63,8 @@ pub struct Site { pub permalinks: HashMap, /// Contains all pages and sections of the site pub library: Arc>, + /// Whether to load draft pages + include_drafts: bool, } impl Site { @@ -131,6 +133,7 @@ impl Site { static_path, taxonomies: Vec::new(), permalinks: HashMap::new(), + include_drafts: false, // We will allocate it properly later on library: Arc::new(RwLock::new(Library::new(0, 0, false))), }; @@ -138,6 +141,12 @@ impl Site { Ok(site) } + /// Set the site to load the drafts. + /// Needs to be called before loading it + pub fn include_drafts(&mut self) { + self.include_drafts = true; + } + /// The index sections are ALWAYS at those paths /// There are one index section for the basic language + 1 per language fn index_section_paths(&self) -> Vec<(PathBuf, Option)> { @@ -233,8 +242,8 @@ impl Site { let mut pages_insert_anchors = HashMap::new(); for page in pages { let p = page?; - // Draft pages are not rendered in zola build so we just discard them - if p.meta.draft && !self.config.is_in_serve_mode() { + // Should draft pages be ignored? + if p.meta.draft && !self.include_drafts { continue; } pages_insert_anchors.insert( @@ -525,7 +534,7 @@ impl Site { self.tera.register_function("trans", global_fns::Trans::new(self.config.clone())); self.tera.register_function( "get_taxonomy_url", - global_fns::GetTaxonomyUrl::new(&self.config.default_language,&self.taxonomies), + global_fns::GetTaxonomyUrl::new(&self.config.default_language, &self.taxonomies), ); } @@ -540,7 +549,11 @@ impl Site { ); self.tera.register_function( "get_taxonomy", - global_fns::GetTaxonomy::new(&self.config.default_language, self.taxonomies.clone(), self.library.clone()), + global_fns::GetTaxonomy::new( + &self.config.default_language, + self.taxonomies.clone(), + self.library.clone(), + ), ); } diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index 015f6caf..7fac192e 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -189,9 +189,10 @@ fn can_build_site_without_live_reload() { } #[test] -fn can_build_site_with_live_reload() { +fn can_build_site_with_live_reload_and_drafts() { let (_, _tmp_dir, public) = build_site_with_setup("test_site", |mut site| { site.enable_live_reload(1000); + site.include_drafts(); (site, true) }); @@ -230,7 +231,9 @@ fn can_build_site_with_live_reload() { r#""# )); - assert_eq!(file_exists!(public, "posts/draft/index.html"), false); + // Drafts are included + assert!(file_exists!(public, "posts/draft/index.html")); + assert!(file_contains!(public, "sitemap.xml", "draft")); } #[test] diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index c84b6da8..a57126b9 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -94,8 +94,8 @@ impl ResizeImage { } } -static DEFAULT_OP: &'static str = "fill"; -static DEFAULT_FMT: &'static str = "auto"; +static DEFAULT_OP: &str = "fill"; +static DEFAULT_FMT: &str = "auto"; const DEFAULT_Q: u8 = 75; impl TeraFn for ResizeImage { @@ -203,8 +203,9 @@ impl TeraFn for GetTaxonomyUrl { args.get("name"), "`get_taxonomy_url` requires a `name` argument with a string value" ); - let lang = optional_arg!(String, args.get("lang"), "`get_taxonomy`: `lang` must be a string") - .unwrap_or_else(|| self.default_lang.clone()); + let lang = + optional_arg!(String, args.get("lang"), "`get_taxonomy`: `lang` must be a string") + .unwrap_or_else(|| self.default_lang.clone()); let container = match self.taxonomies.get(&format!("{}-{}", kind, lang)) { Some(c) => c, @@ -296,7 +297,11 @@ pub struct GetTaxonomy { default_lang: String, } impl GetTaxonomy { - pub fn new(default_lang: &str, all_taxonomies: Vec, library: Arc>) -> Self { + pub fn new( + default_lang: &str, + all_taxonomies: Vec, + library: Arc>, + ) -> Self { let mut taxonomies = HashMap::new(); for taxo in all_taxonomies { taxonomies.insert(format!("{}-{}", taxo.kind.name, taxo.kind.lang), taxo); @@ -312,8 +317,9 @@ impl TeraFn for GetTaxonomy { "`get_taxonomy` requires a `kind` argument with a string value" ); - let lang = optional_arg!(String, args.get("lang"), "`get_taxonomy`: `lang` must be a string") - .unwrap_or_else(|| self.default_lang.clone()); + let lang = + optional_arg!(String, args.get("lang"), "`get_taxonomy`: `lang` must be a string") + .unwrap_or_else(|| self.default_lang.clone()); match self.taxonomies.get(&format!("{}-{}", kind, lang)) { Some(t) => Ok(to_value(t.to_serialized(&self.library.read().unwrap())).unwrap()), @@ -408,8 +414,8 @@ mod tests { let tags_fr = Taxonomy { kind: taxo_config_fr, items: vec![tag_fr] }; let taxonomies = vec![tags.clone(), tags_fr.clone()]; - let static_fn = GetTaxonomy::new(&config.default_language, taxonomies.clone(), library.clone()) - ; + let static_fn = + GetTaxonomy::new(&config.default_language, taxonomies.clone(), library.clone()); // can find it correctly let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); diff --git a/docs/content/documentation/content/page.md b/docs/content/documentation/content/page.md index 87a4a193..65124687 100644 --- a/docs/content/documentation/content/page.md +++ b/docs/content/documentation/content/page.md @@ -55,7 +55,7 @@ date = # will not be rendered. weight = 0 -# A draft page is only rendered in `zola serve`, they are ignored in `zola build` and `zola check` +# A draft page is only loaded if the `--drafts` flag is passed to `zola build`, `zola serve` or `zola check` draft = false # If filled, it will use that slug instead of the filename to make up the URL diff --git a/docs/content/documentation/getting-started/cli-usage.md b/docs/content/documentation/getting-started/cli-usage.md index c63c9ba3..d31a1980 100644 --- a/docs/content/documentation/getting-started/cli-usage.md +++ b/docs/content/documentation/getting-started/cli-usage.md @@ -56,6 +56,8 @@ You can also point to another config file than `config.toml` like so - the posit $ zola --config config.staging.toml build ``` +By defaults, drafts are not loaded. If you wish to include them, pass the `--drafts` flag. + ## serve This will build and serve the site using a local server. You can also specify @@ -95,12 +97,16 @@ You can also point to another config file than `config.toml` like so - the posit $ zola --config config.staging.toml serve ``` +By defaults, drafts are not loaded. If you wish to include them, pass the `--drafts` flag. + ### check The check subcommand will try to build all pages just like the build command would, but without writing any of the results to disk. Additionally, it will also check all external links present in Markdown files by trying to fetch them (links present in the template files will not be checked). +By defaults, drafts are not loaded. If you wish to include them, pass the `--drafts` flag. + ## Colored output Any of the three commands will emit colored output if your terminal supports it. diff --git a/src/cli.rs b/src/cli.rs index 89518409..0598e750 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -36,6 +36,10 @@ pub fn build_cli() -> App<'static, 'static> { .default_value("public") .takes_value(true) .help("Outputs the generated site in the given path"), + Arg::with_name("drafts") + .long("drafts") + .takes_value(false) + .help("Include drafts when loading the site"), ]), SubCommand::with_name("serve") .about("Serve the site. Rebuild and reload on change automatically") @@ -66,6 +70,10 @@ pub fn build_cli() -> App<'static, 'static> { .long("watch-only") .takes_value(false) .help("Do not start a server, just re-build project on changes"), + Arg::with_name("drafts") + .long("drafts") + .takes_value(false) + .help("Include drafts when loading the site"), Arg::with_name("open") .short("O") .long("open") @@ -74,5 +82,11 @@ pub fn build_cli() -> App<'static, 'static> { ]), SubCommand::with_name("check") .about("Try building the project without rendering it. Checks links") + .args(&[ + Arg::with_name("drafts") + .long("drafts") + .takes_value(false) + .help("Include drafts when loading the site"), + ]) ]) } diff --git a/src/cmd/build.rs b/src/cmd/build.rs index aca974e2..7ac1edc5 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -5,12 +5,20 @@ use site::Site; use console; -pub fn build(config_file: &str, base_url: Option<&str>, output_dir: &str) -> Result<()> { +pub fn build( + config_file: &str, + base_url: Option<&str>, + output_dir: &str, + include_drafts: bool, +) -> Result<()> { let mut site = Site::new(env::current_dir().unwrap(), config_file)?; site.set_output_path(output_dir); if let Some(b) = base_url { site.set_base_url(b.to_string()); } + if include_drafts { + site.include_drafts(); + } site.load()?; console::notify_site_size(&site); console::warn_about_ignored_pages(&site); diff --git a/src/cmd/check.rs b/src/cmd/check.rs index c2991ac7..29fba3aa 100644 --- a/src/cmd/check.rs +++ b/src/cmd/check.rs @@ -6,7 +6,12 @@ use site::Site; use console; -pub fn check(config_file: &str, base_path: Option<&str>, base_url: Option<&str>) -> Result<()> { +pub fn check( + config_file: &str, + base_path: Option<&str>, + base_url: Option<&str>, + include_drafts: bool, +) -> Result<()> { let bp = base_path.map(PathBuf::from).unwrap_or_else(|| env::current_dir().unwrap()); let mut site = Site::new(bp, config_file)?; // Force the checking of external links @@ -14,6 +19,9 @@ pub fn check(config_file: &str, base_path: Option<&str>, base_url: Option<&str>) if let Some(b) = base_url { site.set_base_url(b.to_string()); } + if include_drafts { + site.include_drafts(); + } site.load()?; console::check_site_summary(&site); console::warn_about_ignored_pages(&site); diff --git a/src/cmd/init.rs b/src/cmd/init.rs index 88233ffa..92c0556b 100644 --- a/src/cmd/init.rs +++ b/src/cmd/init.rs @@ -59,16 +59,14 @@ pub fn is_directory_quasi_empty(path: &Path) -> Result { pub fn create_new_project(name: &str) -> Result<()> { let path = Path::new(name); // Better error message than the rust default - if path.exists() { - if !is_directory_quasi_empty(&path)? { - if name == "." { - bail!("The current directory is not an empty folder (hidden files are ignored)."); - } else { - bail!( - "`{}` is not an empty folder (hidden files are ignored).", - path.to_string_lossy().to_string() - ) - } + if path.exists() && !is_directory_quasi_empty(&path)? { + if name == "." { + bail!("The current directory is not an empty folder (hidden files are ignored)."); + } else { + bail!( + "`{}` is not an empty folder (hidden files are ignored).", + path.to_string_lossy().to_string() + ) } } diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 080eaf2f..32ccae9d 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -118,6 +118,7 @@ fn create_new_site( output_dir: &str, base_url: &str, config_file: &str, + include_drafts: bool, ) -> Result<(Site, String)> { let mut site = Site::new(env::current_dir().unwrap(), config_file)?; @@ -132,6 +133,9 @@ fn create_new_site( site.config.enable_serve_mode(); site.set_base_url(base_url); site.set_output_path(output_dir); + if include_drafts { + site.include_drafts(); + } site.load()?; site.enable_live_reload(port); console::notify_site_size(&site); @@ -148,9 +152,11 @@ pub fn serve( config_file: &str, watch_only: bool, open: bool, + include_drafts: bool, ) -> Result<()> { let start = Instant::now(); - let (mut site, address) = create_new_site(interface, port, output_dir, base_url, config_file)?; + let (mut site, address) = + create_new_site(interface, port, output_dir, base_url, config_file, include_drafts)?; console::report_elapsed_time(start); // Setup watchers @@ -375,18 +381,21 @@ pub fn serve( ChangeKind::StaticFiles => copy_static(&site, &path, &partial_path), ChangeKind::Sass => reload_sass(&site, &path, &partial_path), ChangeKind::Themes => { - console::info("-> Themes changed. The whole site will be reloaded."); + console::info( + "-> Themes changed. The whole site will be reloaded.", + ); site = create_new_site( interface, port, output_dir, base_url, config_file, + include_drafts, ) .unwrap() .0; rebuild_done_handling(&broadcaster, Ok(()), "/x.js"); - }, + } ChangeKind::Config => { console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible."); site = create_new_site( @@ -395,6 +404,7 @@ pub fn serve( output_dir, base_url, config_file, + include_drafts, ) .unwrap() .0; @@ -432,18 +442,21 @@ pub fn serve( (ChangeKind::StaticFiles, p) => copy_static(&site, &path, &p), (ChangeKind::Sass, p) => reload_sass(&site, &path, &p), (ChangeKind::Themes, _) => { - console::info("-> Themes changed. The whole site will be reloaded."); + console::info( + "-> Themes changed. The whole site will be reloaded.", + ); site = create_new_site( interface, port, output_dir, base_url, config_file, + include_drafts, ) .unwrap() .0; rebuild_done_handling(&broadcaster, Ok(()), "/x.js"); - }, + } (ChangeKind::Config, _) => { console::info("-> Config changed. The whole site will be reloaded. The browser needs to be refreshed to make the changes visible."); site = create_new_site( @@ -452,6 +465,7 @@ pub fn serve( output_dir, base_url, config_file, + include_drafts, ) .unwrap() .0; diff --git a/src/main.rs b/src/main.rs index 1af99df6..43838537 100644 --- a/src/main.rs +++ b/src/main.rs @@ -48,7 +48,12 @@ fn main() { console::info("Building site..."); let start = Instant::now(); let output_dir = matches.value_of("output_dir").unwrap(); - match cmd::build(config_file, matches.value_of("base_url"), output_dir) { + match cmd::build( + config_file, + matches.value_of("base_url"), + output_dir, + matches.is_present("drafts"), + ) { Ok(()) => console::report_elapsed_time(start), Err(e) => { console::unravel_errors("Failed to build the site", &e); @@ -67,6 +72,7 @@ fn main() { }; let watch_only = matches.is_present("watch_only"); let open = matches.is_present("open"); + let include_drafts = matches.is_present("drafts"); // Default one if port != 1111 && !watch_only && !port_is_available(port) { @@ -85,7 +91,16 @@ fn main() { let output_dir = matches.value_of("output_dir").unwrap(); let base_url = matches.value_of("base_url").unwrap(); console::info("Building site..."); - match cmd::serve(interface, port, output_dir, base_url, config_file, watch_only, open) { + match cmd::serve( + interface, + port, + output_dir, + base_url, + config_file, + watch_only, + open, + include_drafts, + ) { Ok(()) => (), Err(e) => { console::unravel_errors("", &e); @@ -100,6 +115,7 @@ fn main() { config_file, matches.value_of("base_path"), matches.value_of("base_url"), + matches.is_present("drafts"), ) { Ok(()) => console::report_elapsed_time(start), Err(e) => {