From 129e693521a1a7fbf392d7516f0ce688d0e0194b Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 27 Nov 2017 18:09:09 +0100 Subject: [PATCH] Add default templates --- CHANGELOG.md | 4 +- Cargo.lock | 30 +++---------- components/templates/Cargo.toml | 2 +- components/utils/src/default_tpl.html | 43 +++++++++++++++++++ components/utils/src/templates.rs | 32 +++++++++++--- .../{templates => test-templates}/child.html | 0 .../included.html | 0 .../{templates => test-templates}/index.html | 0 .../{templates => test-templates}/macros.html | 0 .../using-macros.html | 0 src/cmd/init.rs | 5 +-- 11 files changed, 81 insertions(+), 35 deletions(-) create mode 100644 components/utils/src/default_tpl.html rename components/utils/{templates => test-templates}/child.html (100%) rename components/utils/{templates => test-templates}/included.html (100%) rename components/utils/{templates => test-templates}/index.html (100%) rename components/utils/{templates => test-templates}/macros.html (100%) rename components/utils/{templates => test-templates}/using-macros.html (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e2f418..fe34548 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,12 @@ # Changelog -## 0.2.3 (unreleased) +## 0.3.0 (unreleased) - Add `get_taxonomy_url` to retrieve the permalink of a tag/category - Fix bug when generating permalinks for taxonomies - Change names of individual taxonomies to be plural (ie `tags/my-tag` instead of `tag/my-tag`) +- Update to Tera 0.11 +- Better UX on first `serve` thanks to some default templates. ## 0.2.2 (2017-11-01) diff --git a/Cargo.lock b/Cargo.lock index ef232c4..77104c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -54,15 +54,6 @@ dependencies = [ "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "base64" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "base64" version = "0.8.0" @@ -350,7 +341,7 @@ dependencies = [ "front_matter 0.1.0", "iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "site 0.1.0", "staticfile 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "term-painter 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -602,7 +593,7 @@ dependencies = [ [[package]] name = "notify" -version = "4.0.2" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -613,7 +604,7 @@ dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1061,7 +1052,7 @@ dependencies = [ name = "templates" version = "0.1.0" dependencies = [ - "base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "config 0.1.0", "content 0.1.0", "errors 0.1.0", @@ -1263,15 +1254,6 @@ name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "walkdir" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "walkdir" version = "1.0.7" @@ -1345,7 +1327,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum backtrace 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8709cc7ec06f6f0ae6c2c7e12f6ed41540781f72b488d83734978295ceae182e" "checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" -"checksum base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5032d51da2741729bfdaeb2664d9b8c6d9fd1e2b90715c660b6def36628499c2" "checksum base64 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c4a342b450b268e1be8036311e2c613d7f8a7ed31214dff1cc3b60852a3168d" "checksum bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e" "checksum bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dead7461c1127cf637931a1e50934eb6eee8bff2f74433ac7909e9afcee04a3" @@ -1403,7 +1384,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum mount 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32245731923cd096899502fc4c4317cfd09f121e80e73f7f576cf3777a824256" "checksum net2 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)" = "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09" "checksum nix 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfb3ddedaa14746434a02041940495bf11325c22f6d36125d3bdd56090d50a79" -"checksum notify 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "745bdfd0d0764c71525e880c6d7662b721cb5658ddb2feaa71c3193ec359aef8" +"checksum notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5c3812da3098f210a0bb440f9c008471a031aa4c1de07a264fdd75456c95a4eb" "checksum num 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525" "checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba" "checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01" @@ -1474,7 +1455,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" "checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780" "checksum walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff" "checksum walkdir 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b6d201f4f8998a837196b6de9c73e35af14c992cbb92c4ab641d2c2dce52de" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" diff --git a/components/templates/Cargo.toml b/components/templates/Cargo.toml index ffacd74..18d989a 100644 --- a/components/templates/Cargo.toml +++ b/components/templates/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Vincent Prouillet "] [dependencies] tera = "0.11.0-beta" -base64 = "0.7" +base64 = "0.8" lazy_static = "0.2" pulldown-cmark = "0" diff --git a/components/utils/src/default_tpl.html b/components/utils/src/default_tpl.html new file mode 100644 index 0000000..5788358 --- /dev/null +++ b/components/utils/src/default_tpl.html @@ -0,0 +1,43 @@ + + + Gutenberg + + +
+

Welcome to Gutenberg!

+

+ You're seeing this page because we couldn't find a template to render. +

+

+ To modify this page, create a {{filename}} file in the templates directory or + install a theme. +
+ You can find what variables are available in this template in the documentation. +

+
+ + + + diff --git a/components/utils/src/templates.rs b/components/utils/src/templates.rs index 4e36c2a..3d4b4da 100644 --- a/components/utils/src/templates.rs +++ b/components/utils/src/templates.rs @@ -2,6 +2,20 @@ use tera::{Tera, Context}; use errors::Result; +static DEFAULT_TPL: &str = include_str!("default_tpl.html"); + + +macro_rules! render_default_tpl { + ($filename: expr, $url: expr) => { + { + let mut context = Context::new(); + context.add("filename", $filename); + context.add("url", $url); + Tera::one_off(DEFAULT_TPL, &context, true).map_err(|e| e.into()) + } + }; +} + /// Renders the given template with the given context, but also ensures that, if the default file /// is not found, it will look up for the equivalent template for the current theme if there is one. /// Lastly, if it's a default template (index, section or page), it will just return an empty string @@ -19,11 +33,19 @@ pub fn render_template(name: &str, tera: &Tera, context: &Context, theme: Option .map_err(|e| e.into()); } - if name == "index.html" || name == "section.html" || name == "page.html" { - return Ok(String::new()); + // maybe it's a default one? + match name { + "index.html" | "section.html" => { + render_default_tpl!(name, "https://www.getgutenberg.io/documentation/templates/pages-sections/#section-variables") + }, + "page.html" => { + render_default_tpl!(name, "https://www.getgutenberg.io/documentation/templates/pages-sections/#page-variables") + }, + "tag.html" | "tags.html" | "category.html" | "categories.html" => { + render_default_tpl!(name, "https://www.getgutenberg.io/documentation/templates/tags-categories/") + }, + _ => bail!("Tried to render `{}` but the template wasn't found", name) } - - bail!("Tried to render `{}` but the template wasn't found", name) } @@ -55,7 +77,7 @@ mod tests { #[test] fn can_rewrite_all_paths_of_theme() { - let mut tera = Tera::parse("templates/*.html").unwrap(); + let mut tera = Tera::parse("test-templates/*.html").unwrap(); rewrite_theme_paths(&mut tera, "hyde"); // special case to make the test work: we also rename the files to // match the imports diff --git a/components/utils/templates/child.html b/components/utils/test-templates/child.html similarity index 100% rename from components/utils/templates/child.html rename to components/utils/test-templates/child.html diff --git a/components/utils/templates/included.html b/components/utils/test-templates/included.html similarity index 100% rename from components/utils/templates/included.html rename to components/utils/test-templates/included.html diff --git a/components/utils/templates/index.html b/components/utils/test-templates/index.html similarity index 100% rename from components/utils/templates/index.html rename to components/utils/test-templates/index.html diff --git a/components/utils/templates/macros.html b/components/utils/test-templates/macros.html similarity index 100% rename from components/utils/templates/macros.html rename to components/utils/test-templates/macros.html diff --git a/components/utils/templates/using-macros.html b/components/utils/test-templates/using-macros.html similarity index 100% rename from components/utils/templates/using-macros.html rename to components/utils/test-templates/using-macros.html diff --git a/src/cmd/init.rs b/src/cmd/init.rs index 3545e89..5afd75e 100644 --- a/src/cmd/init.rs +++ b/src/cmd/init.rs @@ -57,8 +57,7 @@ pub fn create_new_project(name: &str) -> Result<()> { println!(); console::success(&format!("Done! Your site was created in {:?}", canonicalize(path).unwrap())); println!(); - console::info("Get started by using the built-in server: `gutenberg serve`"); - println!("There is no built-in theme so you will see a white page."); - println!("Visit https://github.com/Keats/gutenberg for the full documentation."); + console::info("Get started by moving into the directory and using the built-in server: `gutenberg serve`"); + println!("Visit https://www.getgutenberg.io for the full documentation."); Ok(()) }