diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0f9298f..0000000 --- a/.travis.yml +++ /dev/null @@ -1,60 +0,0 @@ -dist: trusty -language: rust -services: docker - -env: - global: - - CRATE_NAME=zola - -matrix: - include: - # Linux - - env: TARGET=x86_64-unknown-linux-gnu - # OSX - - env: TARGET=x86_64-apple-darwin - os: osx - - # The earliest stable Rust version that works - - env: TARGET=x86_64-unknown-linux-gnu - rust: 1.34.0 - - -before_install: set -e - -install: - - sh ci/install.sh - - source ~/.cargo/env || true - -script: - - bash ci/script.sh - -after_script: set +e - -before_deploy: - - sh ci/before_deploy.sh - -deploy: - api_key: - secure: "nksXOY7p8vAWDpItN9Tyx+0CmOPMj/iAgH+iT512URpgJG/i+ziUWDEYpQO4PfZMJUDUa1tnSZ31O4MIe2Sgfj6DHR1zK+LKeLaZxuxxJUSMXSAkbIXcjFlOPKQBPnMZVVcDaHMxz18jiRpElDR2k0PIEtspW2rDsrr+7mzmQn7pan60k77tU3RG3K7fYgMmNjVv64XqMBSCS3fpqiroIz7rVL1HZ3sCoTNnxDM8nXo/8gTjlVowTvUTsVyHRgtDRJdlPuI0yf4oJmvQPX74P2OkQmOVpGxeJ/gSTJ1xWxYfMgyvNaiO9NKF+fUfxvHR/V58CfBHPdJkcnThV5KIPjE5mHZfSTFf5cG6gJtnVhvhQV7vBhIRI/iCt55SPCXse1HWzTY1GxE5oXw2VzUt/kzD2pFf8rtf64JURgGolenYv3aw+ps1MGUwUjl8CF31XBSiASVwpif7kd9P3bafg6pGUytfjgpV/wJJc8OpO8IGwTSNe4r0wtcFb92stxta4NKC3L4F0w/juaK+0+Mjt4SCyh6rRzpHQu9TJKniskp7/URp5KhMFAo66sFpgSYVa23OTkYmjtB8IqlJzmpuDSs/WSAVA8InSgHDaQeBd0UEbNaWU1+avtAGBtb8+rZnbw7ikPF0j2pHImD5ZjHp7+jt/hpcwqrOkBuB5CSeBKs=" - file_glob: true - file: $CRATE_NAME-$TRAVIS_TAG-$TARGET.* - on: - condition: $TRAVIS_RUST_VERSION = stable - tags: true - provider: releases - skip_cleanup: true - -cache: cargo -before_cache: - # Travis can't cache files that are not readable by "others" - - chmod -R a+r $HOME/.cargo - -branches: - only: - # release tags - - /^v\d+\.\d+\.\d+.*$/ - - master - - next - -notifications: - email: false diff --git a/CHANGELOG.md b/CHANGELOG.md index a62e6fa..01611aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,29 @@ # Changelog +## 0.9.0 (2019-09-28) + +### Breaking + +- Add `--drafts` flag to `build`, `serve` and `check` to load drafts. Drafts are never loaded by default anymore +- Using `fit` in `resize_image` on an image smaller than the given height/width is now a no-op and will not upscale images anymore + +### Other +- Add `--open` flag to open server URL in default browser +- Fix sitemaps namespace & do not urlencode URLs +- Update livereload +- Add `hard_link_static` config option to hard link things in the static directory instead of copying +- Add warning for old style internal links since they would still function silently +- Print some counts when running `zola check` +- Re-render all pages/sections when `anchor-link.html` is changed +- 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 +- Add `lang` parameter to `get_taxonomy` and `get_taxonomy_url` +- Rebuild whole site on changes in `themes` changes +- Add one-dark syntax highlighting theme +- Process images on changes in `zola serve` if needed after change + ## 0.8.0 (2019-06-22) ### Breaking diff --git a/Cargo.lock b/Cargo.lock index fbc61cb..df5fef3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,25 +6,26 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-connect" -version = "0.2.0" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-utils 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-rt 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-utils 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -32,59 +33,58 @@ dependencies = [ [[package]] name = "actix-files" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "actix-http 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-web 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-http 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-web 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "v_htmlescape 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-http" -version = "0.2.4" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-connect 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-server-config 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-threadpool 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-utils 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-connect 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-utils 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "copyless 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", @@ -100,36 +100,37 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-rt" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "actix-threadpool 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-server" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "actix-rt 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-server-config 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-rt 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -143,81 +144,81 @@ dependencies = [ [[package]] name = "actix-server-config" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-service" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-threadpool" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-utils" -version = "0.4.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-web" -version = "1.0.2" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-http 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-http 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "actix-router 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-rt 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-server 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-server-config 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-threadpool 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-utils 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-rt 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-server 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-utils 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "actix-web-codegen 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -225,34 +226,34 @@ name = "actix-web-codegen" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "adler32" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "aho-corasick" -version = "0.7.3" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ammonia" -version = "2.1.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "html5ever 0.23.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)", + "html5ever 0.24.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (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 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -260,17 +261,17 @@ name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "arc-swap" -version = "0.3.11" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "arrayvec" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -278,38 +279,36 @@ dependencies = [ [[package]] name = "atty" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.30" +version = "0.3.38" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -322,17 +321,17 @@ dependencies = [ [[package]] name = "bincode" -version = "1.1.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -343,7 +342,7 @@ dependencies = [ "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -356,17 +355,15 @@ dependencies = [ [[package]] name = "bstr" -version = "0.1.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "build_const" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "byte-tools" version = "0.3.1" @@ -383,42 +380,61 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "c2-chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cc" -version = "1.0.37" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "chrono" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "chrono-tz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parse-zoneinfo 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "clap" version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -427,7 +443,7 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -439,14 +455,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "config" version = "0.1.0" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", - "globset 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -467,10 +483,10 @@ dependencies = [ "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -478,7 +494,7 @@ dependencies = [ [[package]] name = "copyless" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -487,7 +503,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -495,38 +511,20 @@ name = "core-foundation-sys" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "crc" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "crc32fast" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-channel" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-deque" -version = "0.6.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -534,21 +532,21 @@ name = "crossbeam-deque" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -556,35 +554,36 @@ name = "crossbeam-queue" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-utils" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv" -version = "1.0.7" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv-core" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -593,40 +592,29 @@ version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "deflate" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "derive_more" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "derive_more" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -636,10 +624,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "digest" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -649,87 +637,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "either" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "elasticlunr-rs" -version = "2.3.5" +version = "2.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "encoding" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-japanese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-korean" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-simpchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-singlebyte" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-tradchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding_index_tests" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "encoding_rs" -version = "0.8.17" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -738,8 +669,8 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -747,7 +678,7 @@ name = "error-chain" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -755,10 +686,10 @@ dependencies = [ name = "errors" version = "0.1.0" dependencies = [ - "image 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.22.2 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -766,7 +697,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -776,8 +707,8 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -788,23 +719,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "filetime" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "flate2" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -829,14 +761,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "front_matter" version = "0.1.0" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -850,7 +782,7 @@ name = "fsevent" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -859,7 +791,7 @@ name = "fsevent-sys" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -872,7 +804,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -892,7 +824,7 @@ dependencies = [ [[package]] name = "futures" -version = "0.1.27" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -900,29 +832,39 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "generic-array" -version = "0.12.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "getopts" -version = "0.2.19" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "getrandom" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gif" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "color_quant 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -936,14 +878,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "globset" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "bstr 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -951,24 +893,24 @@ name = "globwalk" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ignore 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ignore 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "h2" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -990,26 +932,26 @@ name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "html5ever" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "markup5ever 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "markup5ever 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1023,14 +965,14 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "httparse" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1040,7 +982,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "humantime" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1048,31 +990,31 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.30" +version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1081,8 +1023,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1097,38 +1039,47 @@ dependencies = [ "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ignore" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "globset 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "image" -version = "0.21.2" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "gif 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gif 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "png 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiff 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1136,17 +1087,17 @@ name = "imageproc" version = "0.1.0" dependencies = [ "errors 0.1.0", - "image 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.22.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] [[package]] name = "indexmap" -version = "1.0.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1154,7 +1105,7 @@ name = "inflate" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1162,9 +1113,9 @@ name = "inotify" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1172,7 +1123,7 @@ name = "inotify-sys" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1180,7 +1131,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1189,10 +1140,10 @@ name = "ipconfig" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", "widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winreg 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1202,11 +1153,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jpeg-decoder" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1225,7 +1176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1235,29 +1186,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.58" +version = "0.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "library" version = "0.1.0" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "config 0.1.0", "errors 0.1.0", "front_matter 0.1.0", - "globset 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rendering 0.1.0", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "slotmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1266,15 +1217,16 @@ name = "line-wrap" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "link_checker" version = "0.1.0" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", + "errors 0.1.0", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1293,7 +1245,7 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1301,10 +1253,10 @@ dependencies = [ [[package]] name = "log" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1327,22 +1279,22 @@ 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]] name = "markup5ever" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1353,34 +1305,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memoffset" -version = "0.2.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "mime" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "mime_guess" -version = "2.0.0-alpha.6" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1388,27 +1338,16 @@ name = "miniz-sys" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "miniz_oxide" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "miniz_oxide_c_api" -version = "0.2.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1420,8 +1359,8 @@ dependencies = [ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1434,7 +1373,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1445,7 +1384,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1465,16 +1404,16 @@ name = "native-tls" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.23 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1482,9 +1421,9 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1497,10 +1436,10 @@ name = "nix" version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1514,26 +1453,26 @@ name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "notify" -version = "4.0.12" +version = "4.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "filetime 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1542,8 +1481,8 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1551,7 +1490,7 @@ name = "num-integer" version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1560,7 +1499,7 @@ name = "num-iter" version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1570,7 +1509,7 @@ name = "num-rational" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1580,7 +1519,7 @@ name = "num-traits" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1588,22 +1527,17 @@ name = "num_cpus" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "onig" -version = "4.3.2" +version = "4.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1612,26 +1546,34 @@ name = "onig_sys" version = "69.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "opaque-debug" -version = "0.2.2" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "open" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "openssl" -version = "0.10.23" +version = "0.10.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1641,14 +1583,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-sys" -version = "0.9.47" +version = "0.9.49" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1670,11 +1612,11 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1683,26 +1625,33 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot_core" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1710,12 +1659,17 @@ name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "pest" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-trie 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1723,29 +1677,29 @@ name = "pest_derive" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_generator 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pest_generator" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_meta 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pest_meta" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pest 2.1.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.2 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1781,12 +1735,11 @@ version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pkg-config" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1796,23 +1749,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "png" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "deflate 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "deflate 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", "inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ppv-lite86" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "precomputed-hash" version = "0.1.1" @@ -1826,27 +1784,35 @@ dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proc-macro2" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "publicsuffix" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pulldown-cmark" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "getopts 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1856,28 +1822,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.12" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "quote" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1885,23 +1871,40 @@ name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_chacha" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_hc" version = "0.1.0" @@ -1910,6 +1913,14 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_isaac" version = "0.1.1" @@ -1923,9 +1934,9 @@ name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1935,10 +1946,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1946,8 +1957,8 @@ name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1960,23 +1971,23 @@ dependencies = [ [[package]] name = "rayon" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rayon-core" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1997,48 +2008,44 @@ dependencies = [ "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "site 0.1.0", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redox_syscall" -version = "0.1.54" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "redox_termios" -version = "0.1.1" +name = "regex" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "regex" -version = "1.1.7" +name = "regex-automata" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.7" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2048,51 +2055,52 @@ dependencies = [ "config 0.1.0", "errors 0.1.0", "front_matter 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "link_checker 0.1.0", - "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pulldown-cmark 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "pulldown-cmark 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] [[package]] name = "reqwest" -version = "0.9.18" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2109,13 +2117,13 @@ name = "rust-stemmers" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustc-demangle" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2128,17 +2136,17 @@ dependencies = [ [[package]] name = "ryu" -version = "0.2.8" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "safemem" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "same-file" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2149,28 +2157,28 @@ name = "sass-rs" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "sass-sys 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "sass-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sass-sys" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "schannel" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2192,10 +2200,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "search" version = "0.1.0" dependencies = [ - "ammonia 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "elasticlunr-rs 2.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "ammonia 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elasticlunr-rs 2.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", ] @@ -2206,7 +2214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2233,31 +2241,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.92" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.92" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2267,19 +2275,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "serde_urlencoded" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "sha-1" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2289,20 +2308,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "signal-hook" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook-registry 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "signal-hook-registry" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arc-swap 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2321,14 +2340,14 @@ dependencies = [ "imageproc 0.1.0", "library 0.1.0", "link_checker 0.1.0", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sass-rs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "search 0.1.0", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2339,7 +2358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "slotmap" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2357,13 +2376,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "socket2" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2373,7 +2392,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "string" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2384,24 +2403,24 @@ name = "string_cache" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "string_cache_codegen" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2427,28 +2446,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.37" +version = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "syn" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "synstructure" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2457,33 +2486,33 @@ name = "syntect" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "onig 4.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tempfile" -version = "3.0.8" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2492,18 +2521,18 @@ version = "0.1.0" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "config 0.1.0", - "csv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", - "image 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.22.2 (registry+https://github.com/rust-lang/crates.io-index)", "imageproc 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", - "pulldown-cmark 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pulldown-cmark 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2519,21 +2548,22 @@ dependencies = [ [[package]] name = "tera" -version = "1.0.0-beta.10" +version = "1.0.0-beta.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono-tz 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "globwalk 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "unic-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2541,18 +2571,7 @@ name = "termcolor" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termion" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2560,7 +2579,7 @@ name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2568,7 +2587,7 @@ name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2581,7 +2600,7 @@ dependencies = [ [[package]] name = "tiff" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2595,28 +2614,27 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-trace-core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2625,8 +2643,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2635,7 +2653,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2644,17 +2662,17 @@ name = "tokio-current-thread" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2663,8 +2681,8 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2672,15 +2690,15 @@ name = "tokio-reactor" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2690,15 +2708,15 @@ name = "tokio-signal" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2707,7 +2725,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2716,7 +2734,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2725,18 +2743,18 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2744,28 +2762,20 @@ name = "tokio-timer" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-trace-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-udp" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2774,18 +2784,10 @@ dependencies = [ [[package]] name = "toml" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "toml" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2796,19 +2798,19 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "enum-as-inner 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2817,16 +2819,16 @@ name = "trust-dns-resolver" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "ipconfig 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2840,22 +2842,17 @@ name = "try_from" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "typenum" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ucd-trie" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ucd-util" -version = "0.1.3" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2904,15 +2901,7 @@ dependencies = [ [[package]] name = "unicase" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicase" -version = "2.4.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2941,7 +2930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicode-width" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2949,25 +2938,34 @@ name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "utf-8" -version = "0.7.5" +name = "url" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "utf8-ranges" -version = "1.0.3" +name = "utf-8" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2975,12 +2973,12 @@ name = "utils" version = "0.1.0" dependencies = [ "errors 0.1.0", - "serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2993,36 +2991,35 @@ dependencies = [ [[package]] name = "v_escape" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "v_escape_derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape_derive 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "v_escape_derive" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "v_htmlescape" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "v_escape 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "vcpkg" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3042,24 +3039,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "walkdir" -version = "2.2.8" +version = "2.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" -version = "0.0.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "widestring" version = "0.4.0" @@ -3072,7 +3074,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3094,7 +3096,7 @@ name = "winapi-util" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3104,19 +3106,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wincolor" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "winreg" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3124,24 +3126,24 @@ name = "winutil" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ws" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3168,106 +3170,98 @@ dependencies = [ [[package]] name = "zola" -version = "0.8.0" +version = "0.9.0" dependencies = [ - "actix-files 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-web 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-files 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-web 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", "front_matter 0.1.0", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.12 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "open 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "rebuild 0.1.0", "site 0.1.0", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", - "ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] "checksum actix-codec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9f2c11af4b06dc935d8e1b1491dad56bfb32febc49096a91e773f8535c176453" -"checksum actix-connect 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d7fbab0d79b2f3415a79570e3db12eaa75c26239541e613b832655145a5e9488" -"checksum actix-files 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cd2b5710b43cee64137ab679eb5ece1bf85d3d65d900eb2f19ba74a9b8c6499f" -"checksum actix-http 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "81aa906e74d2cd5f219f596003b0fd94d05e75a4a448b12afea66e7658b6c9e1" +"checksum actix-connect 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fade9bd4bb46bacde89f1e726c7a3dd230536092712f5d94d77ca57c087fca0" +"checksum actix-files 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f1e4640b28cd96059541c932f6f350c63c76688e43d68305cdb88e0004da12b5" +"checksum actix-http 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf758ebbc4abfecbdc1ce7408601b2d7e0cd7e4766ef61183cd8ce16c194d64" "checksum actix-router 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "23224bb527e204261d0291102cb9b52713084def67d94f7874923baefe04ccf7" -"checksum actix-rt 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "61e09627004cb25149fd177c4a062d2061c4ec40aae5820ecd37a87195e759f8" -"checksum actix-server 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ba8c936356c882420eab87051b12ca1926dc42348863d05fff7eb151df9cddbb" -"checksum actix-server-config 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e78703f07d0bd08b426b482d53569d84f1e1929024f0431b3a5a2dc0c1c60e0f" -"checksum actix-service 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aaecc01bbc595ebd7a563a7d4f8a607d0b964bb55273c6f362b0b02c26508cf2" -"checksum actix-threadpool 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1c29f7c554d56b3841f4bb85d5b3dee01ba536e1307679f56eb54de28aaec3fb" -"checksum actix-utils 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7ab47adc5e67fc83a0c58570b40531f09814a5daa969e0d913ebeab908a43508" -"checksum actix-web 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6478c837afbe528cfe468976e67b6b81a6330414b00234c4546a158f9f0739fc" +"checksum actix-rt 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "168620aaf00fcd2a16e621790abaf180ef7377c2f8355b4ca5775d6afc778ed8" +"checksum actix-server 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb3038e9e457e0a498ea682723e0f4e6cc2c4f362a1868d749808355275ad959" +"checksum actix-server-config 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "483a34989c682d93142bacad6300375bb6ad8002d2e0bb249dbad86128b9ff30" +"checksum actix-service 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bca5b48e928841ff7e7dce1fdb5b0d4582f6b1b976e08f4bac3f640643e0773f" +"checksum actix-threadpool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b5ae85d13da7e6fb86b1b7bc83185e0e3bd4cc5f421c887e1803796c034d35d" +"checksum actix-utils 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6ea501068a0173533704be321f149853f702d9e3c3ce9d57e7a96d94b1ab5aca" +"checksum actix-web 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ced216f53d465f9d6478454b2b994d1fe91ec203ac9d056837cbe07e823cb83" "checksum actix-web-codegen 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe9e3cdec1e645b675f354766e0688c5705021c85ab3cf739be1c8999b91c76" -"checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" -"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" -"checksum ammonia 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c799ecf1ad77acb48b643e2f45b12d60ee41576287fc575031aa020de88b8f45" +"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" +"checksum ammonia 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9e266e1f4be5ffa05309f650e2586fe1d3ae6034eb24025a7ae1dfecc330823a" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum arc-swap 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "bc4662175ead9cd84451d5c35070517777949a2ed84551764129cedb88384841" -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" -"checksum backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)" = "ada4c783bb7e7443c14e0480f429ae2cc99da95065aeab7ee1b81ada0419404f" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" +"checksum arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f1a1eca3195b729bbd64e292ef2f5fff6b1c28504fed762ce2b1013dde4d8e92" +"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" +"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" +"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" +"checksum backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)" = "690a62be8920ccf773ee00ef0968649b0e724cda8bd5b12286302b4ae955fdf5" +"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9f04a5e50dc80b3d5d35320889053637d15011aed5e66b66b37ae798c65da6f7" -"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" +"checksum bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8ab639324e3ee8774d296864fbc0dbbb256cf1a41c490b94cba90c082915f92" +"checksum bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a606a02debe2813760609f57a64a2ffd27d9fdf5b2f133eaca0b248dd92cdd2" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" -"checksum bstr 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "59604ece62a407dc9164732e5adea02467898954c3a5811fd2dc140af14ef15b" -"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" +"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" -"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" -"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" +"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" +"checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" +"checksum chrono-tz 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e0e430fad0384e4defc3dc6b1223d1b886087a8bf9b7080e5ae027f73851ea15" "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum color_quant 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0dbbb57365263e881e805dc77d94697c9118fd94d8da011240555aa7b23445bd" "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" -"checksum copyless 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f8ffa29b14f03d473f1558c789d020fe41bb7790774f429ff818f4ed9a6f9a0e" +"checksum copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6ff9c56c9fb2a49c05ef0e431485a22400af20d33226dc0764d891d09e724127" "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" -"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" -"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum csv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9044e25afb0924b5a5fc5511689b0918629e85d68ea591e5e87fbf1e85ea1b3b" -"checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" +"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" +"checksum csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d" +"checksum csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" "checksum ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7dfd2d8b4c82121dfdff120f818e09fc4380b0b7e17a742081a89b94853e87f" -"checksum deflate 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6abb26e16e8d419b5c78662aa9f82857c2386a073da266840e474d5055ec86" -"checksum derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d944ac6003ed268757ef1ee686753b57efc5fcf0ebe7b64c9fc81e7e32ff839" +"checksum deflate 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)" = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" "checksum derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" "checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" -"checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" +"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" -"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" -"checksum elasticlunr-rs 2.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01da3cbc2ecacc9311b8f8c1efdf2115b39bd87bdb69e84a3718efbfaf87fa6f" -"checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" -"checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" -"checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" -"checksum encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" -"checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" -"checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" -"checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" -"checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum elasticlunr-rs 2.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f66a620976c38dbbbcd6355910432cef8b0911b3af86332029752379f0ff7924" +"checksum encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9" "checksum enum-as-inner 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3d58266c97445680766be408285e798d3401c6d4c378ec5552e78737e681e37d" "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum filetime 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2f8c63033fcba1f51ef744505b3cad42510432b904c062afa67ad7ece008429d" -"checksum flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "550934ad4808d5d39365e5d61727309bf18b3b02c6c56b729cb92e7dd84bc3d8" +"checksum filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd7380b54ced79dda72ecc35cc4fbbd1da6bba54afaa37e96fd1c2a308cd469" +"checksum flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "2adaffba6388640136149e18ed080b77a78611c1e1d6de75aedcdf78df5d4682" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" @@ -3278,60 +3272,61 @@ dependencies = [ "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" -"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" +"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" -"checksum getopts 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)" = "72327b15c228bfe31f1390f93dd5e9279587f0463836393c9df719ce62a3e450" -"checksum gif 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "86c2f2b597d6e05c86ee5947b2223bda468fe8dad3e88e2a6520869322aaf568" +"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +"checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" +"checksum gif 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "471d90201b3b223f3451cd4ad53e34295f16a1df17b1edf3736d47761c3981af" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum globset 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef4feaabe24a0a658fd9cf4a9acf6ed284f045c77df0f49020ba3245cfb7b454" +"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" "checksum globwalk 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "53cbcf0368596897b0a3b8ff2110acf2400e80ffad4ca9238b52ff282a9b267b" -"checksum h2 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "69b2a5a3092cbebbc951fe55408402e696ee2ed09019137d1800fc2c411265d2" +"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" "checksum hashbrown 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1de41fb8dba9714efd92241565cdff73f78508c95697dd56787d3cba27e2353" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" -"checksum html5ever 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce65ac8028cf5a287a7dbf6c4e0a6cf2dcf022ed5b167a81bae66ebf599a8b7" -"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" +"checksum html5ever 0.24.1 (registry+https://github.com/rust-lang/crates.io-index)" = "025483b0a1e4577bb28578318c886ee5f817dda6eb62473269349044406644cb" +"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" -"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)" = "40e7692b2009a70b1e9b362284add4d8b75880fefddb4acaa5e67194e843f219" +"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum ignore 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8dc57fa12805f367736a38541ac1a9fc6a52812a0ca959b1d4d4b640a89eb002" -"checksum image 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)" = "99198e595d012efccf12abf4abc08da2d97be0b0355a2b08d101347527476ba4" -"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" +"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +"checksum ignore 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ec16832258409d571aaef8273f3c3cc5b060d784e159d1a0f3b0017308f84a7" +"checksum image 0.22.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ee0665404aa0f2ad154021777b785878b0e5b1c1da030455abc3d9ed257c2c67" +"checksum indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a61202fbe46c4a951e9404a720a0180bcf3212c750d735cb5c4ba4dc551299f3" "checksum inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" "checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" "checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum ipconfig 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa79fa216fbe60834a9c0737d7fcd30425b32d1c58854663e24d4c4b328ed83f" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b7d43206b34b3f94ea9445174bda196e772049b9bddbc620c9d29b2d20110d" +"checksum jpeg-decoder 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "c1aae18ffeeae409c6622c3b6a7ee49792a7e5a062eea1b135fbb74e301792ba" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" +"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" "checksum line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "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 markup5ever 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f1af46a727284117e09780d05038b1ce6fc9c76cc6df183c3dae5a8955a25e21" +"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.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" -"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" -"checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" +"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" +"checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" +"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" "checksum miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9e3ae51cea1576ceba0dde3d484d30e6e5b86dee0b2d412fe3a16a15c98202" -"checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e" -"checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" +"checksum miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7108aff85b876d06f22503dcce091e29f76733b2bfdd91eebce81f5e68203a10" "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" @@ -3342,72 +3337,81 @@ dependencies = [ "checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -"checksum notify 4.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "3572d71f13ea8ed41867accd971fd564aa75934cf7a1fae03ddb8c74a8a49943" +"checksum notify 4.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1191efa2b8fe041decb55c238a125b7a1aeb6fad7a525133a02be5ec949ff3cb" "checksum num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" "checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" "checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" -"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" -"checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" +"checksum onig 4.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8518fcb2b1b8c2f45f0ad499df4fda6087fc3475ca69a185c173b8315d2fb383" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" -"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" -"checksum openssl 0.10.23 (registry+https://github.com/rust-lang/crates.io-index)" = "97c140cbb82f3b3468193dd14c1b88def39f341f68257f8a7fe8ed9ed3f628a5" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +"checksum open 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "94b424e1086328b0df10235c6ff47be63708071881bead9e76997d9291c0134b" +"checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)" = "75bdd6dbbb4958d38e47a1d2348847ad1eb4dc205dc5d37473ae504391865acc" +"checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +"checksum parse-zoneinfo 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "089a398ccdcdd77b8c38909d5a1e4b67da1bc4c9dbfe6d5b536c828eddb779e5" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pest 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "933085deae3f32071f135d799d75667b63c8dc1f4537159756e3d4ceab41868c" +"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +"checksum pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e4fb201c5c22a55d8b24fef95f78be52738e5e1361129be1b5e862ecdb6894a" "checksum pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -"checksum pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63120576c4efd69615b5537d3d052257328a4ca82876771d6944424ccfd9f646" -"checksum pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f249ea6de7c7b7aba92b4ff4376a994c6dbd98fd2166c89d5c4947397ecb574d" +"checksum pest_generator 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9fcf299b5712d06ee128a556c94709aaa04512c4dffb8ead07c5c998447fc0" +"checksum pest_meta 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "df43fd99896fd72c485fe47542c7b500e4ac1e8700bf995544d1317a60ded547" "checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" "checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" "checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" "checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" -"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" "checksum plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a9f075f6394100e7c105ed1af73fb1859d6fd14e49d4290d578120beb167f" -"checksum png 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "63daf481fdd0defa2d1d2be15c674fbfa1b0fd71882c303a91f9a79b3252c359" +"checksum png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8422b27bb2c013dd97b9aef69e161ce262236f49aaf46a0489011c8ff0264602" +"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d" -"checksum pulldown-cmark 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "051e60ace841b3bfecd402fe5051c06cb3bec4a6e6fdd060a37aa8eb829a1db3" +"checksum proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afdc77cc74ec70ed262262942ebb7dac3d479e9e5cfa2da1841c0806f6cdabcc" +"checksum publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9bf259a81de2b2eb9850ec990ec78e6a25319715584fd7652b9b26f96fcb1510" +"checksum pulldown-cmark 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85b0ad0d4c1702965ee6bb5b4ff5e71f83850b497d497e9444302987bf9e26a4" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4" -"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" +"checksum rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83a27732a533a1be0a0035a111fe76db89ad312f6f0347004c220c57f209a123" +"checksum rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "98dcf634205083b17d0861252431eb2acbfb698ab7478a2d20de07954f47ec7b" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0b2f0808e7d7e4fb1cb07feb6ff2f4bc827938f24f8c2e6a3beb7370af544bdd" -"checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" +"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" +"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)" = "00eb63f212df0e358b427f0f40aa13aaea010b470be642ad422bcbca2feff2e4" +"checksum reqwest 0.9.20 (registry+https://github.com/rust-lang/crates.io-index)" = "0f6d896143a583047512e59ac54a215cb203c29cc941917343edea3be8df9c78" "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" "checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa" -"checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" +"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" -"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" -"checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" +"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" +"checksum safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b08423011dae9a5ca23f07cf57dac3857f5c885d352b76f6d95f4aea9434d0" +"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" "checksum sass-rs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cabcf7c6e55053f359911187ac401409aad2dc14338cae972dec266fee486abd" -"checksum sass-sys 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2254be05606718ff2754f0fe24dd46b3acec026ba0495c5533081e0d7f2f893d" -"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" +"checksum sass-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6e16ac97c2335bc367e2d675f54c1823558f1b19a6c67671d48b70e30ae22972" +"checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021" "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" @@ -3415,101 +3419,100 @@ dependencies = [ "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)" = "32746bf0f26eab52f06af0d0aa1984f641341d06d8d673c693871da2d188c9be" -"checksum serde_derive 1.0.92 (registry+https://github.com/rust-lang/crates.io-index)" = "46a3223d0c9ba936b61c0d2e3e559e3217dbfb8d65d06d26e8b3c25de38bae3e" -"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd" +"checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" +"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" +"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum signal-hook 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "72ab58f1fda436857e6337dcb6a5aaa34f16c5ddc87b3a8b6ef7a212f90b9c5a" -"checksum signal-hook-registry 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cded4ffa32146722ec54ab1f16320568465aa922aa9ab4708129599740da85d7" +"checksum signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4f61c4d59f3aaa9f61bba6450a9b80ba48362fd7d651689e7a10c453b1f6dc68" +"checksum signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1797d48f38f91643908bb14e35e79928f9f4b3cefb2420a564dde0991b4358dc" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4ed041f7f2ff35f2bf7d688bf30686976512f8300e37433c2c73ea9f4cf14b" +"checksum slotmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c46a3482db8f247956e464d783693ece164ca056e6e67563ee5505bdb86452cd" "checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" -"checksum socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "4e626972d3593207547f14bf5fc9efa4d0e7283deb73fef1dff313dae9ab8878" +"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0bbfb8937e38e34c3444ff00afb28b0811d9554f15c5ad64d12b0308d1d1995" +"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" "checksum string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25d70109977172b127fe834e5449e5ab1740b9ba49fa18a2020f509174f25423" -"checksum string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eea1eee654ef80933142157fdad9dd8bc43cf7c74e999e369263496f04ff4da" +"checksum string_cache_codegen 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6" "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1c33039533f051704951680f1adfd468fd37ac46816ded0d9ee068e60f05f" "checksum strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "47cd23f5c7dee395a00fa20135e2ec0fffcdfa151c56182966d7a3261343432e" -"checksum syn 0.15.37 (registry+https://github.com/rust-lang/crates.io-index)" = "e11410033fd5cf69a1cf2084604e011190c56f11e08ffc53df880f5f65f1c6e4" +"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e80b8831c5a543192ffc3727f01cf0e57579c6ac15558e3048bfb5708892167b" -"checksum tempfile 3.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7dc4738f2e68ed2855de5ac9cdbe05c9216773ecde4739b2f095002ab03a13ef" +"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 1.0.0-beta.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7811c7e5f4bb98b99edae8fb06fc6f4a393d645bc7721ec1905b278f10e951" +"checksum tera 1.0.0-beta.16 (registry+https://github.com/rust-lang/crates.io-index)" = "e0fa13465ab85540a4d069fbe9c76af96e78ef83046af4ed54e7be33ef98c3eb" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" -"checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" -"checksum tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4834f28a0330cb9f3f2c87d2649dca723cb33802e2bdcf18da32759fbec7ce" +"checksum tiff 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b7c2cfc4742bd8a32f2e614339dd8ce30dbcf676bb262bd63a2327bc5df57d" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "ec2ffcf4bcfc641413fa0f1427bf8f91dfc78f56a6559cbf50e04837ae442a87" +"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" -"checksum tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "83ea44c6c0773cc034771693711c35c677b4b5a4b21b9e7071704c54de7d555e" +"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72558af20be886ea124595ea0f806dd5703b8958e4705429dd58b3d8231f72f2" +"checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" -"checksum tokio-trace-core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9c8a256d6956f7cb5e2bdfe8b1e8022f1a09206c6c2b1ba00f3b746b260c613" -"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" -"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" -"checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" +"checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" +"checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" "checksum trust-dns-proto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5559ebdf6c2368ddd11e20b11d6bbaf9e46deb803acd7815e93f5a7b4a6d2901" "checksum trust-dns-resolver 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c9992e58dba365798803c0b91018ff6c8d3fc77e06977c4539af2a6bfe0a039" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "71a9c5b1fe77426cf144cc30e49e955270f5086e31a6441dfa8b32efc09b9d77" -"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" +"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" +"checksum ucd-trie 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8f00ed7be0c1ff1e24f46c3d2af4859f7e863672ba3a6e92e7cff702bf9f06c2" "checksum unic-char-property 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" "checksum unic-char-range 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" "checksum unic-common 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" "checksum unic-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" "checksum unic-ucd-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" "checksum unic-ucd-version 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" +"checksum unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e2e6bd1e59e56598518beb94fd6db628ded570326f0a98c679a304bd9f00150" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" -"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" +"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" -"checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" -"checksum v_escape 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8865501b78eef9193c1b45486acf18ba889e5662eba98854d6fc59d8ecf3542d" -"checksum v_escape_derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "306896ff4b75998501263a1dc000456de442e21d68fe8c8bdf75c66a33a58e23" -"checksum v_htmlescape 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7fbbe0fa88dd36f9c8cf61a218d4b953ba669de4d0785832f33cc72bd081e1be" -"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" +"checksum v_escape 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "660b101c07b5d0863deb9e7fb3138777e858d6d2a79f9e6049a27d1cc77c6da6" +"checksum v_escape_derive 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "75b2dc50d1c14d7b4488bf34263140a3827d8ca4f4265411e4784ac262382276" +"checksum v_htmlescape 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e33e939c0d8cf047514fb6ba7d5aac78bc56677a6938b2ee67000b91f2e97e41" +"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c7904a7e2bb3cdf0cf5e783f44204a85a37a93151738fa349f06680f59a98b45" -"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" +"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" +"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" +"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" "checksum widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effc0e4ff8085673ea7b9b2e3c73f6bd4d118810c9009ed8f1e16bd96c331db6" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" -"checksum winreg 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "daf67b95d0b1bf421c4f11048d63110ca3719977169eec86396b614c8942b6e0" +"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" +"checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" "checksum winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" -"checksum ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ec91ea61b83ce033c43c06c52ddc7532f465c0153281610d44c58b74083aee1a" +"checksum ws 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6f5bb86663ff4d1639408410f50bf6050367a8525d644d49a6894cd618a631" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5" "checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" diff --git a/Cargo.toml b/Cargo.toml index 40c35e9..065a70b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zola" -version = "0.8.0" -authors = ["Vincent Prouillet "] +version = "0.9.0" +authors = ["Vincent Prouillet "] license = "MIT" readme = "README.md" description = "A fast static site generator with everything built-in" @@ -21,16 +21,17 @@ atty = "0.2.11" clap = "2" chrono = "0.4" lazy_static = "1.1.0" -toml = "0.4" termcolor = "1.0.4" # Used in init to ensure the url given as base_url is a valid one -url = "1.5" +url = "2" # Below is for the serve cmd actix-files = "0.1" actix-web = { version = "1.0", default-features = false, features = [] } notify = "4" -ws = "0.8" +ws = "0.9" ctrlc = "3" +open = "1.2" +globset = "0.4" site = { path = "components/site" } errors = { path = "components/errors" } @@ -56,4 +57,4 @@ members = [ [profile.release] lto = true -codegen-units = 1 \ No newline at end of file +codegen-units = 1 diff --git a/Dockerfile b/Dockerfile index 804e746..ccbe068 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,6 @@ RUN install_packages python-pip curl tar python-setuptools rsync binutils RUN pip install dockerize RUN mkdir -p /workdir WORKDIR /workdir -ENV DOCKER_TAG v0.7.0 RUN curl -L https://github.com/getzola/zola/releases/download/$DOCKER_TAG/zola-$DOCKER_TAG-x86_64-unknown-linux-gnu.tar.gz | tar xz RUN mv zola /usr/bin RUN dockerize -n -o /workdir /usr/bin/zola diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index bfa5bb6..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,57 +0,0 @@ -# Based on the "trust" template v0.1.1 -# https://github.com/japaric/trust/tree/v0.1.1 - -os: Visual Studio 2017 - -environment: - global: - RUST_VERSION: stable - CRATE_NAME: zola - - matrix: - - target: x86_64-pc-windows-msvc - RUST_VERSION: 1.34.0 - - target: x86_64-pc-windows-msvc - RUST_VERSION: stable - -install: - - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 - - curl -sSf -o rustup-init.exe https://win.rustup.rs/ - - rustup-init.exe -y --default-host %TARGET% --default-toolchain %RUST_VERSION% - - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin - - rustc -Vv - - cargo -V - -test_script: - # we don't run the "test phase" when doing deploys - - if [%APPVEYOR_REPO_TAG%]==[false] ( - cargo test --all --target %TARGET% - ) - -before_deploy: - - cargo rustc --target %TARGET% --release --bin zola -- -C lto - - ps: ci\before_deploy.ps1 - -deploy: - artifact: /.*\.zip/ - auth_token: - secure: i64eFOHoySQryE3M9pr2JGRukAK3LGltOsUxeFHwilS+3O6/6828A4NUmI0FW4zN - description: '' - on: - RUST_VERSION: stable - appveyor_repo_tag: true - provider: GitHub - -cache: - - C:\Users\appveyor\.cargo\registry - - target - -branches: - only: - # Release tags - - /^v\d+\.\d+\.\d+.*$/ - - master - - next - -# disable automatic builds -build: false diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..6109f53 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,133 @@ +trigger: + branches: + include: ['*'] + tags: + include: ['*'] + +stages: + - stage: Tests + jobs: + - job: + strategy: + matrix: + windows-stable: + imageName: 'vs2017-win2016' + rustup_toolchain: stable + mac-stable: + imageName: 'macos-10.14' + rustup_toolchain: stable + linux-stable: + imageName: 'ubuntu-16.04' + rustup_toolchain: stable + linux-1.35: + imageName: 'ubuntu-16.04' + rustup_toolchain: 1.35.0 + pool: + vmImage: $(imageName) + steps: + - script: | + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN + echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin" + displayName: Install rust + condition: ne( variables['Agent.OS'], 'Windows_NT' ) + - script: | + curl -sSf -o rustup-init.exe https://win.rustup.rs + rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN% + echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin" + displayName: Windows install rust + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + - script: cargo build --all + displayName: Cargo build + - script: cargo test --all + displayName: Cargo test + + + - stage: Release + dependsOn: Tests + condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/') + jobs: + - job: + strategy: + matrix: + windows-stable: + imageName: 'vs2017-win2016' + rustup_toolchain: stable + target: 'x86_64-pc-windows-msvc' + mac-stable: + imageName: 'macos-10.14' + rustup_toolchain: stable + target: 'x86_64-apple-darwin' + linux-stable: + imageName: 'ubuntu-16.04' + rustup_toolchain: stable + target: 'x86_64-unknown-linux-gnu' + pool: + vmImage: $(imageName) + steps: + - script: | + curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN + echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin" + displayName: Install rust + condition: ne( variables['Agent.OS'], 'Windows_NT' ) + - script: | + curl -sSf -o rustup-init.exe https://win.rustup.rs + rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN% + echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin" + displayName: Windows install rust + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + + - script: | + rustup target add $TARGET + cargo build --release --target $TARGET + condition: ne( variables['Agent.OS'], 'Windows_NT' ) + displayName: Build + - script: | + rustup target add %TARGET% + cargo build --release --target %TARGET% + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + displayName: Build on Windows + + - task: CopyFiles@2 + displayName: Copy assets + condition: ne( variables['Agent.OS'], 'Windows_NT' ) + inputs: + sourceFolder: '$(Build.SourcesDirectory)/target/$(TARGET)/release' + contents: zola + targetFolder: '$(Build.BinariesDirectory)/' + - task: CopyFiles@2 + displayName: Copy assets on Windows + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + inputs: + sourceFolder: '$(Build.SourcesDirectory)/target/$(TARGET)/release' + contents: zola.exe + targetFolder: '$(Build.BinariesDirectory)/' + + - task: ArchiveFiles@2 + displayName: Gather assets + condition: ne( variables['Agent.OS'], 'Windows_NT' ) + inputs: + rootFolderOrFile: '$(Build.BinariesDirectory)/zola' + archiveType: 'tar' + tarCompression: 'gz' + archiveFile: '$(Build.ArtifactStagingDirectory)/zola-$(Build.SourceBranchName)-$(TARGET).tar.gz' + - task: ArchiveFiles@2 + displayName: Gather assets + condition: eq( variables['Agent.OS'], 'Windows_NT' ) + inputs: + rootFolderOrFile: '$(Build.BinariesDirectory)/zola.exe' + archiveType: 'tar' + tarCompression: 'gz' + archiveFile: '$(Build.ArtifactStagingDirectory)/zola-$(Build.SourceBranchName)-$(TARGET).tar.gz' + + - task: GithubRelease@0 + inputs: + gitHubConnection: 'zola' + repositoryName: 'keats/azure-pipelines-test' + action: 'edit' + target: '$(build.sourceVersion)' + tagSource: 'manual' + tag: '$(Build.SourceBranchName)' + assets: '$(Build.ArtifactStagingDirectory)/zola-$(Build.SourceBranchName)-$(TARGET).tar.gz' + title: '$(Build.SourceBranchName)' + assetUploadMode: 'replace' + addChangeLog: true diff --git a/ci/before_deploy.ps1 b/ci/before_deploy.ps1 deleted file mode 100644 index 08bd1d2..0000000 --- a/ci/before_deploy.ps1 +++ /dev/null @@ -1,22 +0,0 @@ -# This script takes care of packaging the build artifacts that will go in the -# release zipfile - -$SRC_DIR = $PWD.Path -$STAGE = [System.Guid]::NewGuid().ToString() - -Set-Location $ENV:Temp -New-Item -Type Directory -Name $STAGE -Set-Location $STAGE - -$ZIP = "$SRC_DIR\$($Env:CRATE_NAME)-$($Env:APPVEYOR_REPO_TAG_NAME)-$($Env:TARGET).zip" - -Copy-Item "$SRC_DIR\target\$($Env:TARGET)\release\zola.exe" '.\' - -7z a "$ZIP" * - -Push-AppveyorArtifact "$ZIP" - -Remove-Item *.* -Force -Set-Location .. -Remove-Item $STAGE -Set-Location $SRC_DIR diff --git a/ci/before_deploy.sh b/ci/before_deploy.sh deleted file mode 100644 index e2f9fe0..0000000 --- a/ci/before_deploy.sh +++ /dev/null @@ -1,31 +0,0 @@ -# This script takes care of building your crate and packaging it for release - -set -ex - -main() { - local src=$(pwd) \ - stage= - - case $TRAVIS_OS_NAME in - linux) - stage=$(mktemp -d) - ;; - osx) - stage=$(mktemp -d -t tmp) - ;; - esac - - test -f Cargo.lock || cargo generate-lockfile - - cross rustc --bin zola --target $TARGET --release -- -C lto - - cp target/$TARGET/release/zola $stage/ - - cd $stage - tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz * - cd $src - - rm -rf $stage -} - -main diff --git a/ci/install.sh b/ci/install.sh deleted file mode 100644 index 76bb734..0000000 --- a/ci/install.sh +++ /dev/null @@ -1,31 +0,0 @@ -set -ex - -main() { - curl https://sh.rustup.rs -sSf | \ - sh -s -- -y --default-toolchain $TRAVIS_RUST_VERSION - - local target= - if [ $TRAVIS_OS_NAME = linux ]; then - target=x86_64-unknown-linux-gnu - sort=sort - else - target=x86_64-apple-darwin - sort=gsort # for `sort --sort-version`, from brew's coreutils. - fi - - # This fetches latest stable release - local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \ - | cut -d/ -f3 \ - | grep -E '^v[0-9.]+$' \ - | $sort --version-sort \ - | tail -n1) - echo cross version: $tag - curl -LSfs https://japaric.github.io/trust/install.sh | \ - sh -s -- \ - --force \ - --git japaric/cross \ - --tag $tag \ - --target $target -} - -main diff --git a/ci/script.sh b/ci/script.sh deleted file mode 100644 index aaf17fe..0000000 --- a/ci/script.sh +++ /dev/null @@ -1,17 +0,0 @@ -# This script takes care of testing your crate - -set -ex - -# TODO This is the "test phase", tweak it as you see fit -main() { - if [ ! -z $DISABLE_TESTS ]; then - return - fi - - cross test --all --target $TARGET -} - -# we don't run the "test phase" when doing deploys -if [ -z $TRAVIS_TAG ]; then - main -fi diff --git a/completions/_zola b/completions/_zola index b92cc47..3ca5a4d 100644 --- a/completions/_zola +++ b/completions/_zola @@ -36,7 +36,7 @@ _arguments "${_arguments_options[@]}" \ '--help[Prints help information]' \ '-V[Prints version information]' \ '--version[Prints version information]' \ -':name -- Name of the project. Will create a new directory with that name in the current directory:_files' \ +'::name -- Name of the project. Will create a new directory with that name in the current directory:_files' \ && ret=0 ;; (build) @@ -45,6 +45,7 @@ _arguments "${_arguments_options[@]}" \ '--base-url=[Force the base URL to be that value (default to the one in config.toml)]' \ '-o+[Outputs the generated site in the given path]' \ '--output-dir=[Outputs the generated site in the given path]' \ +'--drafts[Include drafts when loading the site]' \ '-h[Prints help information]' \ '--help[Prints help information]' \ '-V[Prints version information]' \ @@ -62,6 +63,9 @@ _arguments "${_arguments_options[@]}" \ '-u+[Changes the base_url]' \ '--base-url=[Changes the base_url]' \ '--watch-only[Do not start a server, just re-build project on changes]' \ +'--drafts[Include drafts when loading the site]' \ +'-O[Open site in the default browser]' \ +'--open[Open site in the default browser]' \ '-h[Prints help information]' \ '--help[Prints help information]' \ '-V[Prints version information]' \ @@ -70,6 +74,7 @@ _arguments "${_arguments_options[@]}" \ ;; (check) _arguments "${_arguments_options[@]}" \ +'--drafts[Include drafts when loading the site]' \ '-h[Prints help information]' \ '--help[Prints help information]' \ '-V[Prints version information]' \ diff --git a/completions/_zola.ps1 b/completions/_zola.ps1 index e10fb9d..89915d9 100644 --- a/completions/_zola.ps1 +++ b/completions/_zola.ps1 @@ -45,6 +45,7 @@ Register-ArgumentCompleter -Native -CommandName 'zola' -ScriptBlock { [CompletionResult]::new('--base-url', 'base-url', [CompletionResultType]::ParameterName, 'Force the base URL to be that value (default to the one in config.toml)') [CompletionResult]::new('-o', 'o', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path') [CompletionResult]::new('--output-dir', 'output-dir', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path') + [CompletionResult]::new('--drafts', 'drafts', [CompletionResultType]::ParameterName, 'Include drafts when loading the site') [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information') [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information') [CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information') @@ -61,6 +62,9 @@ Register-ArgumentCompleter -Native -CommandName 'zola' -ScriptBlock { [CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'Changes the base_url') [CompletionResult]::new('--base-url', 'base-url', [CompletionResultType]::ParameterName, 'Changes the base_url') [CompletionResult]::new('--watch-only', 'watch-only', [CompletionResultType]::ParameterName, 'Do not start a server, just re-build project on changes') + [CompletionResult]::new('--drafts', 'drafts', [CompletionResultType]::ParameterName, 'Include drafts when loading the site') + [CompletionResult]::new('-O', 'O', [CompletionResultType]::ParameterName, 'Open site in the default browser') + [CompletionResult]::new('--open', 'open', [CompletionResultType]::ParameterName, 'Open site in the default browser') [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information') [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information') [CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information') @@ -68,6 +72,7 @@ Register-ArgumentCompleter -Native -CommandName 'zola' -ScriptBlock { break } 'zola;check' { + [CompletionResult]::new('--drafts', 'drafts', [CompletionResultType]::ParameterName, 'Include drafts when loading the site') [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information') [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information') [CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information') diff --git a/completions/zola.bash b/completions/zola.bash index bc3ea24..dcaa073 100644 --- a/completions/zola.bash +++ b/completions/zola.bash @@ -59,7 +59,7 @@ _zola() { ;; zola__build) - opts=" -h -V -u -o --help --version --base-url --output-dir " + opts=" -h -V -u -o --drafts --help --version --base-url --output-dir " if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -90,7 +90,7 @@ _zola() { return 0 ;; zola__check) - opts=" -h -V --help --version " + opts=" -h -V --drafts --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -135,7 +135,7 @@ _zola() { return 0 ;; zola__serve) - opts=" -h -V -i -p -o -u --watch-only --help --version --interface --port --output-dir --base-url " + opts=" -O -h -V -i -p -o -u --watch-only --drafts --open --help --version --interface --port --output-dir --base-url " if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 diff --git a/completions/zola.fish b/completions/zola.fish index 5e8316f..cb3302e 100644 --- a/completions/zola.fish +++ b/completions/zola.fish @@ -10,6 +10,7 @@ complete -c zola -n "__fish_seen_subcommand_from init" -s h -l help -d 'Prints h complete -c zola -n "__fish_seen_subcommand_from init" -s V -l version -d 'Prints version information' complete -c zola -n "__fish_seen_subcommand_from build" -s u -l base-url -d 'Force the base URL to be that value (default to the one in config.toml)' complete -c zola -n "__fish_seen_subcommand_from build" -s o -l output-dir -d 'Outputs the generated site in the given path' +complete -c zola -n "__fish_seen_subcommand_from build" -l drafts -d 'Include drafts when loading the site' complete -c zola -n "__fish_seen_subcommand_from build" -s h -l help -d 'Prints help information' complete -c zola -n "__fish_seen_subcommand_from build" -s V -l version -d 'Prints version information' complete -c zola -n "__fish_seen_subcommand_from serve" -s i -l interface -d 'Interface to bind on' @@ -17,8 +18,11 @@ complete -c zola -n "__fish_seen_subcommand_from serve" -s p -l port -d 'Which p complete -c zola -n "__fish_seen_subcommand_from serve" -s o -l output-dir -d 'Outputs the generated site in the given path' complete -c zola -n "__fish_seen_subcommand_from serve" -s u -l base-url -d 'Changes the base_url' complete -c zola -n "__fish_seen_subcommand_from serve" -l watch-only -d 'Do not start a server, just re-build project on changes' +complete -c zola -n "__fish_seen_subcommand_from serve" -l drafts -d 'Include drafts when loading the site' +complete -c zola -n "__fish_seen_subcommand_from serve" -s O -l open -d 'Open site in the default browser' complete -c zola -n "__fish_seen_subcommand_from serve" -s h -l help -d 'Prints help information' complete -c zola -n "__fish_seen_subcommand_from serve" -s V -l version -d 'Prints version information' +complete -c zola -n "__fish_seen_subcommand_from check" -l drafts -d 'Include drafts when loading the site' complete -c zola -n "__fish_seen_subcommand_from check" -s h -l help -d 'Prints help information' complete -c zola -n "__fish_seen_subcommand_from check" -s V -l version -d 'Prints version information' complete -c zola -n "__fish_seen_subcommand_from help" -s h -l help -d 'Prints help information' diff --git a/components/config/Cargo.toml b/components/config/Cargo.toml index f377970..643f3d1 100644 --- a/components/config/Cargo.toml +++ b/components/config/Cargo.toml @@ -10,7 +10,7 @@ serde_derive = "1" chrono = "0.4" globset = "0.4" lazy_static = "1" -syntect = "3" +syntect = "=3.2.0" errors = { path = "../errors" } utils = { path = "../utils" } diff --git a/components/config/src/config.rs b/components/config/src/config.rs index 1f37192..7a38760 100644 --- a/components/config/src/config.rs +++ b/components/config/src/config.rs @@ -8,12 +8,20 @@ use toml; use toml::Value as Toml; use errors::Result; +use errors::Error; use highlighting::THEME_SET; 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 { + Build, + Serve, + Check, +} #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] #[serde(default)] @@ -22,11 +30,13 @@ pub struct Language { pub code: String, /// Whether to generate a RSS feed for that language, defaults to `false` pub rss: bool, + /// Whether to generate search index for that language, defaults to `false` + pub search: bool, } impl Default for Language { fn default() -> Language { - Language { code: String::new(), rss: false } + Language { code: String::new(), rss: false, search: false } } } @@ -76,6 +86,8 @@ impl Default for Taxonomy { } } +type TranslateTerm = HashMap; + #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(default)] pub struct Config { @@ -93,8 +105,15 @@ pub struct Config { pub default_language: String, /// The list of supported languages outside of the default one pub languages: Vec, + /// Languages list and translated strings - pub translations: HashMap, + /// + /// The `String` key of `HashMap` is a language name, the value should be toml crate `Table` + /// with String key representing term and value another `String` representing its translation. + /// + /// The attribute is intentionally not public, use `get_translation()` method for translating + /// key into different language. + translations: HashMap, /// Whether to highlight all code blocks found in markdown files. Defaults to false pub highlight_code: bool, @@ -106,6 +125,8 @@ pub struct Config { pub generate_rss: bool, /// The number of articles to include in the RSS feed. Defaults to including all items. pub rss_limit: Option, + /// If set, files from static/ will be hardlinked instead of copied to the output dir. + pub hard_link_static: bool, pub taxonomies: Vec, @@ -120,8 +141,10 @@ pub struct Config { #[serde(skip_serializing, skip_deserializing)] // not a typo, 2 are needed pub ignored_content_globset: Option, - /// Whether to check all external links for validity - pub check_external_links: bool, + /// The mode Zola is currently being ran on. Some logging/feature can differ depending on the + /// command being used. + #[serde(skip_serializing)] + pub mode: Mode, /// A list of directories to search for additional `.sublime-syntax` files in. pub extra_syntaxes: Vec, @@ -265,6 +288,39 @@ impl Config { pub fn languages_codes(&self) -> Vec<&str> { self.languages.iter().map(|l| l.code.as_ref()).collect() } + + pub fn is_in_build_mode(&self) -> bool { + self.mode == Mode::Build + } + + pub fn is_in_serve_mode(&self) -> bool { + self.mode == Mode::Serve + } + + pub fn is_in_check_mode(&self) -> bool { + self.mode == Mode::Check + } + + pub fn enable_serve_mode(&mut self) { + self.mode = Mode::Serve; + } + + pub fn enable_check_mode(&mut self) { + self.mode = Mode::Check; + // Disable syntax highlighting since the results won't be used + // and this operation can be expensive. + self.highlight_code = false; + } + + pub fn get_translation>(&self, lang: S, key: S) -> Result { + let terms = self.translations.get(lang.as_ref()).ok_or_else(|| { + Error::msg(format!("Translation for language '{}' is missing", lang.as_ref())) + })?; + + terms.get(key.as_ref()).ok_or_else(|| { + Error::msg(format!("Translation key '{}' for language '{}' is missing", key.as_ref(), lang.as_ref())) + }).map(|term| term.to_string()) + } } impl Default for Config { @@ -280,9 +336,10 @@ impl Default for Config { languages: Vec::new(), generate_rss: false, rss_limit: None, + hard_link_static: false, taxonomies: Vec::new(), compile_sass: false, - check_external_links: false, + mode: Mode::Build, build_search_index: false, ignored_content: Vec::new(), ignored_content_globset: None, @@ -412,9 +469,7 @@ a_value = 10 assert_eq!(extra["a_value"].as_integer().unwrap(), 10); } - #[test] - fn can_use_language_configuration() { - let config = r#" + const CONFIG_TRANSLATION: &str = r#" base_url = "https://remplace-par-ton-url.fr" default_language = "fr" @@ -424,14 +479,29 @@ title = "Un titre" [translations.en] title = "A title" - "#; - let config = Config::parse(config); - assert!(config.is_ok()); - let translations = config.unwrap().translations; - assert_eq!(translations["fr"]["title"].as_str().unwrap(), "Un titre"); - assert_eq!(translations["en"]["title"].as_str().unwrap(), "A title"); + #[test] + fn can_use_present_translation() { + let config = Config::parse(CONFIG_TRANSLATION).unwrap(); + assert_eq!(config.get_translation("fr", "title").unwrap(), "Un titre"); + assert_eq!(config.get_translation("en", "title").unwrap(), "A title"); + } + + #[test] + fn error_on_absent_translation_lang() { + let config = Config::parse(CONFIG_TRANSLATION).unwrap(); + let error = config.get_translation("absent", "key").unwrap_err(); + + assert_eq!("Translation for language 'absent' is missing", format!("{}", error)); + } + + #[test] + fn error_on_absent_translation_key() { + let config = Config::parse(CONFIG_TRANSLATION).unwrap(); + let error = config.get_translation("en", "absent").unwrap_err(); + + assert_eq!("Translation key 'absent' for language 'en' is missing", format!("{}", error)); } #[test] diff --git a/components/errors/Cargo.toml b/components/errors/Cargo.toml index 4b67b30..21d957d 100644 --- a/components/errors/Cargo.toml +++ b/components/errors/Cargo.toml @@ -6,5 +6,5 @@ authors = ["Vincent Prouillet "] [dependencies] tera = "1.0.0-beta.10" toml = "0.5" -image = "0.21" -syntect = "3" +image = "0.22" +syntect = "=3.2.0" diff --git a/components/errors/src/lib.rs b/components/errors/src/lib.rs index e9a271f..3d806cb 100755 --- a/components/errors/src/lib.rs +++ b/components/errors/src/lib.rs @@ -31,10 +31,9 @@ impl StdError for Error { fn source(&self) -> Option<&(dyn StdError + 'static)> { let mut source = self.source.as_ref().map(|c| &**c); if source.is_none() { - match self.kind { - ErrorKind::Tera(ref err) => source = err.source(), - _ => (), - }; + if let ErrorKind::Tera(ref err) = self.kind { + source = err.source(); + } } source diff --git a/components/front_matter/src/page.rs b/components/front_matter/src/page.rs index 74f8299..3d70ff1 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 db8ca8f..ffbcaf2 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/Cargo.toml b/components/imageproc/Cargo.toml index 39811be..df9b4b1 100644 --- a/components/imageproc/Cargo.toml +++ b/components/imageproc/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Vojtěch Král "] lazy_static = "1" regex = "1.0" tera = "1.0.0-beta.10" -image = "0.21" +image = "0.22" rayon = "1" errors = { path = "../errors" } diff --git a/components/imageproc/src/lib.rs b/components/imageproc/src/lib.rs index 745d40a..7c754b5 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 = @@ -41,8 +41,8 @@ pub enum ResizeOp { /// Scales the image to a specified height with width computed such /// that aspect ratio is preserved FitHeight(u32), - /// Scales the image such that it fits within the specified width and - /// height preserving aspect ratio. + /// If the image is larger than the specified width or height, scales the image such + /// that it fits within the specified width and height preserving aspect ratio. /// Either dimension may end up being smaller, but never larger than specified. Fit(u32, u32), /// Scales the image such that it fills the specified width and height. @@ -129,6 +129,7 @@ impl From for u8 { } } +#[allow(clippy::derive_hash_xor_eq)] impl Hash for ResizeOp { fn hash(&self, hasher: &mut H) { hasher.write_u8(u8::from(*self)); @@ -194,6 +195,7 @@ impl Format { } } +#[allow(clippy::derive_hash_xor_eq)] impl Hash for Format { fn hash(&self, hasher: &mut H) { use Format::*; @@ -264,7 +266,13 @@ impl ImageOp { Scale(w, h) => img.resize_exact(w, h, RESIZE_FILTER), FitWidth(w) => img.resize(w, u32::max_value(), RESIZE_FILTER), FitHeight(h) => img.resize(u32::max_value(), h, RESIZE_FILTER), - Fit(w, h) => img.resize(w, h, RESIZE_FILTER), + Fit(w, h) => { + if img_w > w || img_h > h { + img.resize(w, h, RESIZE_FILTER) + } else { + img + } + }, Fill(w, h) => { let factor_w = img_w as f32 / w as f32; let factor_h = img_h as f32 / h as f32; @@ -300,7 +308,7 @@ impl ImageOp { match self.format { Format::Png => { - let mut enc = PNGEncoder::new(&mut f); + let enc = PNGEncoder::new(&mut f); enc.encode(&img.raw_pixels(), img_w, img_h, img.color())?; } Format::Jpeg(q) => { diff --git a/components/library/Cargo.toml b/components/library/Cargo.toml index 94af375..b2923bf 100644 --- a/components/library/Cargo.toml +++ b/components/library/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Vincent Prouillet "] [dependencies] -slotmap = "0.2" +slotmap = "0.4" rayon = "1" chrono = { version = "0.4", features = ["serde"] } tera = "1.0.0-beta.10" @@ -22,5 +22,5 @@ errors = { path = "../errors" } [dev-dependencies] tempfile = "3" -toml = "0.4" +toml = "0.5" globset = "0.4" diff --git a/components/library/src/content/file_info.rs b/components/library/src/content/file_info.rs index 8d58ebe..0fe0686 100644 --- a/components/library/src/content/file_info.rs +++ b/components/library/src/content/file_info.rs @@ -56,9 +56,8 @@ impl FileInfo { let file_path = path.to_path_buf(); let mut parent = file_path.parent().expect("Get parent of page").to_path_buf(); let name = path.file_stem().unwrap().to_string_lossy().to_string(); - let mut components = find_content_components( - &file_path.strip_prefix(base_path).expect("Strip base path prefix for page"), - ); + let mut components = + find_content_components(&file_path.strip_prefix(base_path).unwrap_or(&file_path)); let relative = if !components.is_empty() { format!("{}/{}.md", components.join("/"), name) } else { @@ -91,9 +90,8 @@ impl FileInfo { let file_path = path.to_path_buf(); let parent = path.parent().expect("Get parent of section").to_path_buf(); let name = path.file_stem().unwrap().to_string_lossy().to_string(); - let components = find_content_components( - &file_path.strip_prefix(base_path).expect("Strip base path prefix for section"), - ); + let components = + find_content_components(&file_path.strip_prefix(base_path).unwrap_or(&file_path)); let relative = if !components.is_empty() { format!("{}/{}.md", components.join("/"), name) } else { @@ -196,7 +194,7 @@ mod tests { #[test] fn can_find_valid_language_in_page() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let mut file = FileInfo::new_page( &Path::new("/home/vincent/code/site/content/posts/tutorials/python.fr.md"), &PathBuf::new(), @@ -209,7 +207,7 @@ mod tests { #[test] fn can_find_valid_language_in_page_with_assets() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let mut file = FileInfo::new_page( &Path::new("/home/vincent/code/site/content/posts/tutorials/python/index.fr.md"), &PathBuf::new(), @@ -235,7 +233,7 @@ mod tests { #[test] fn errors_on_unknown_language_in_page_with_i18n_on() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("it"), rss: false }); + config.languages.push(Language { code: String::from("it"), rss: false, search: false }); let mut file = FileInfo::new_page( &Path::new("/home/vincent/code/site/content/posts/tutorials/python.fr.md"), &PathBuf::new(), @@ -247,7 +245,7 @@ mod tests { #[test] fn can_find_valid_language_in_section() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let mut file = FileInfo::new_section( &Path::new("/home/vincent/code/site/content/posts/tutorials/_index.fr.md"), &PathBuf::new(), diff --git a/components/library/src/content/mod.rs b/components/library/src/content/mod.rs index ac98d5d..dc00271 100644 --- a/components/library/src/content/mod.rs +++ b/components/library/src/content/mod.rs @@ -8,9 +8,9 @@ pub use self::page::Page; pub use self::section::Section; pub use self::ser::{SerializingPage, SerializingSection}; -use rendering::Header; +use rendering::Heading; -pub fn has_anchor(headings: &[Header], anchor: &str) -> bool { +pub fn has_anchor(headings: &[Heading], anchor: &str) -> bool { for heading in headings { if heading.id == anchor { return true; @@ -30,28 +30,28 @@ mod tests { #[test] fn can_find_anchor_at_root() { let input = vec![ - Header { + Heading { level: 1, id: "1".to_string(), permalink: String::new(), title: String::new(), children: vec![], }, - Header { + Heading { level: 2, id: "1-1".to_string(), permalink: String::new(), title: String::new(), children: vec![], }, - Header { + Heading { level: 3, id: "1-1-1".to_string(), permalink: String::new(), title: String::new(), children: vec![], }, - Header { + Heading { level: 2, id: "1-2".to_string(), permalink: String::new(), @@ -65,27 +65,27 @@ mod tests { #[test] fn can_find_anchor_in_children() { - let input = vec![Header { + let input = vec![Heading { level: 1, id: "1".to_string(), permalink: String::new(), title: String::new(), children: vec![ - Header { + Heading { level: 2, id: "1-1".to_string(), permalink: String::new(), title: String::new(), children: vec![], }, - Header { + Heading { level: 3, id: "1-1-1".to_string(), permalink: String::new(), title: String::new(), children: vec![], }, - Header { + Heading { level: 2, id: "1-2".to_string(), permalink: String::new(), diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index 8d419c2..b3ca3cd 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use std::path::{Path, PathBuf}; use regex::Regex; -use slotmap::Key; +use slotmap::DefaultKey; use slug::slugify; use tera::{Context as TeraContext, Tera}; @@ -11,7 +11,7 @@ use config::Config; use errors::{Error, Result}; use front_matter::{split_page_content, InsertAnchor, PageFrontMatter}; use library::Library; -use rendering::{render_content, Header, RenderContext}; +use rendering::{render_content, Heading, RenderContext}; use utils::fs::{find_related_assets, read_file}; use utils::site::get_reading_analytics; use utils::templates::render_template; @@ -35,7 +35,7 @@ pub struct Page { /// The front matter meta-data pub meta: PageFrontMatter, /// The list of parent sections - pub ancestors: Vec, + pub ancestors: Vec, /// The actual content of the page, in markdown pub raw_content: String, /// All the non-md files we found next to the .md file @@ -58,15 +58,15 @@ pub struct Page { /// as summary pub summary: Option, /// The earlier page, for pages sorted by date - pub earlier: Option, + pub earlier: Option, /// The later page, for pages sorted by date - pub later: Option, + pub later: Option, /// The lighter page, for pages sorted by weight - pub lighter: Option, + pub lighter: Option, /// The heavier page, for pages sorted by weight - pub heavier: Option, - /// Toc made from the headers of the markdown file - pub toc: Vec
, + pub heavier: Option, + /// Toc made from the headings of the markdown file + pub toc: Vec, /// How many words in the raw content pub word_count: Option, /// How long would it take to read the raw content. @@ -76,7 +76,7 @@ pub struct Page { /// Corresponds to the lang in the {slug}.{lang}.md file scheme pub lang: String, /// Contains all the translated version of that page - pub translations: Vec, + pub translations: Vec, /// Contains the internal links that have an anchor: we can only check the anchor /// after all pages have been built and their ToC compiled. The page itself should exist otherwise /// it would have errored before getting there @@ -160,7 +160,7 @@ impl Page { page.slug = { if let Some(ref slug) = page.meta.slug { - slug.trim().to_string() + slugify(&slug.trim()) } else if page.file.name == "index" { if let Some(parent) = page.file.path.parent() { if let Some(slug) = slug_from_dated_filename { @@ -171,12 +171,10 @@ impl Page { } else { slugify(&page.file.name) } + } else if let Some(slug) = slug_from_dated_filename { + slugify(&slug) } else { - if let Some(slug) = slug_from_dated_filename { - slugify(&slug) - } else { - slugify(&page.file.name) - } + slugify(&page.file.name) } }; @@ -439,6 +437,22 @@ Hello world"#; assert_eq!(page.permalink, config.make_permalink("hello-world")); } + #[test] + fn can_make_url_from_slug_only_with_no_special_chars() { + let content = r#" + +++ + slug = "hello-&-world" + +++ + Hello world"#; + let config = Config::default(); + let res = Page::parse(Path::new("start.md"), content, &config, &PathBuf::new()); + assert!(res.is_ok()); + let page = res.unwrap(); + assert_eq!(page.path, "hello-world/"); + assert_eq!(page.components, vec!["hello-world"]); + assert_eq!(page.permalink, config.make_permalink("hello-world")); + } + #[test] fn can_make_url_from_path() { let content = r#" @@ -722,7 +736,7 @@ Hello world #[test] fn can_specify_language_in_filename() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let content = r#" +++ +++ @@ -739,7 +753,7 @@ Bonjour le monde"# #[test] fn can_specify_language_in_filename_with_date() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let content = r#" +++ +++ @@ -758,7 +772,7 @@ Bonjour le monde"# #[test] fn i18n_frontmatter_path_overrides_default_permalink() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let content = r#" +++ path = "bonjour" diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 534d158..b8b12ad 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -1,13 +1,13 @@ use std::collections::HashMap; use std::path::{Path, PathBuf}; -use slotmap::Key; +use slotmap::DefaultKey; use tera::{Context as TeraContext, Tera}; use config::Config; use errors::{Error, Result}; use front_matter::{split_section_content, SectionFrontMatter}; -use rendering::{render_content, Header, RenderContext}; +use rendering::{render_content, Heading, RenderContext}; use utils::fs::{find_related_assets, read_file}; use utils::site::get_reading_analytics; use utils::templates::render_template; @@ -38,15 +38,15 @@ pub struct Section { /// All the non-md files we found next to the .md file as string for use in templates pub serialized_assets: Vec, /// All direct pages of that section - pub pages: Vec, + pub pages: Vec, /// All pages that cannot be sorted in this section - pub ignored_pages: Vec, + pub ignored_pages: Vec, /// The list of parent sections - pub ancestors: Vec, + pub ancestors: Vec, /// All direct subsections - pub subsections: Vec, - /// Toc made from the headers of the markdown file - pub toc: Vec
, + pub subsections: Vec, + /// Toc made from the headings of the markdown file + pub toc: Vec, /// How many words in the raw content pub word_count: Option, /// How long would it take to read the raw content. @@ -56,7 +56,7 @@ pub struct Section { /// Corresponds to the lang in the _index.{lang}.md file scheme pub lang: String, /// Contains all the translated version of that section - pub translations: Vec, + pub translations: Vec, /// Contains the internal links that have an anchor: we can only check the anchor /// after all pages have been built and their ToC compiled. The page itself should exist otherwise /// it would have errored before getting there @@ -113,7 +113,11 @@ impl Section { section.reading_time = Some(reading_time); let path = section.file.components.join("/"); if section.lang != config.default_language { - section.path = format!("{}/{}", section.lang, path); + if path.is_empty() { + section.path = format!("{}/", section.lang); + } else { + section.path = format!("{}/{}/", section.lang, path); + } } else { section.path = format!("{}/", path); } @@ -346,7 +350,7 @@ mod tests { #[test] fn can_specify_language_in_filename() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let content = r#" +++ +++ @@ -368,7 +372,7 @@ Bonjour le monde"# #[test] fn can_make_links_to_translated_sections_without_double_trailing_slash() { let mut config = Config::default(); - config.languages.push(Language { code: String::from("fr"), rss: false }); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); let content = r#" +++ +++ @@ -381,4 +385,25 @@ Bonjour le monde"# assert_eq!(section.lang, "fr".to_string()); assert_eq!(section.permalink, "http://a-website.com/fr/"); } + + #[test] + fn can_make_links_to_translated_subsections_with_trailing_slash() { + let mut config = Config::default(); + config.languages.push(Language { code: String::from("fr"), rss: false, search: false }); + let content = r#" ++++ ++++ +Bonjour le monde"# + .to_string(); + let res = Section::parse( + Path::new("content/subcontent/_index.fr.md"), + &content, + &config, + &PathBuf::new(), + ); + assert!(res.is_ok()); + let section = res.unwrap(); + assert_eq!(section.lang, "fr".to_string()); + assert_eq!(section.permalink, "http://a-website.com/fr/subcontent/"); + } } diff --git a/components/library/src/content/ser.rs b/components/library/src/content/ser.rs index f530484..f28ccc0 100644 --- a/components/library/src/content/ser.rs +++ b/components/library/src/content/ser.rs @@ -254,23 +254,21 @@ impl<'a> SerializingSection<'a> { } } - /// Same as from_section but doesn't fetch pages and sections + /// Same as from_section but doesn't fetch pages pub fn from_section_basic(section: &'a Section, library: Option<&'a Library>) -> Self { - let ancestors = if let Some(ref lib) = library { - section + let mut ancestors = vec![]; + let mut translations = vec![]; + let mut subsections = vec![]; + if let Some(ref lib) = library { + ancestors = section .ancestors .iter() .map(|k| lib.get_section_by_key(*k).file.relative.clone()) - .collect() - } else { - vec![] - }; - - let translations = if let Some(ref lib) = library { - TranslatedContent::find_all_sections(section, lib) - } else { - vec![] - }; + .collect(); + translations = TranslatedContent::find_all_sections(section, lib); + subsections = + section.subsections.iter().map(|k| lib.get_section_path_by_key(*k)).collect(); + } SerializingSection { relative_path: §ion.file.relative, @@ -287,7 +285,7 @@ impl<'a> SerializingSection<'a> { assets: §ion.serialized_assets, lang: §ion.lang, pages: vec![], - subsections: vec![], + subsections, translations, } } diff --git a/components/library/src/library.rs b/components/library/src/library.rs index c724a2e..e4d16e2 100644 --- a/components/library/src/library.rs +++ b/components/library/src/library.rs @@ -1,7 +1,7 @@ use std::collections::{HashMap, HashSet}; use std::path::{Path, PathBuf}; -use slotmap::{DenseSlotMap, Key}; +use slotmap::{DenseSlotMap, DefaultKey}; use front_matter::SortBy; @@ -19,13 +19,13 @@ use sorting::{find_siblings, sort_pages_by_date, sort_pages_by_weight}; #[derive(Debug)] pub struct Library { /// All the pages of the site - pages: DenseSlotMap, + pages: DenseSlotMap, /// All the sections of the site - sections: DenseSlotMap
, + sections: DenseSlotMap, /// A mapping path -> key for pages so we can easily get their key - pub paths_to_pages: HashMap, + pub paths_to_pages: HashMap, /// A mapping path -> key for sections so we can easily get their key - pub paths_to_sections: HashMap, + pub paths_to_sections: HashMap, /// Whether we need to look for translations is_multilingual: bool, } @@ -42,7 +42,7 @@ impl Library { } /// Add a section and return its Key - pub fn insert_section(&mut self, section: Section) -> Key { + pub fn insert_section(&mut self, section: Section) -> DefaultKey { let path = section.file.path.clone(); let key = self.sections.insert(section); self.paths_to_sections.insert(path, key); @@ -50,18 +50,18 @@ impl Library { } /// Add a page and return its Key - pub fn insert_page(&mut self, page: Page) -> Key { + pub fn insert_page(&mut self, page: Page) -> DefaultKey { let path = page.file.path.clone(); let key = self.pages.insert(page); self.paths_to_pages.insert(path, key); key } - pub fn pages(&self) -> &DenseSlotMap { + pub fn pages(&self) -> &DenseSlotMap { &self.pages } - pub fn pages_mut(&mut self) -> &mut DenseSlotMap { + pub fn pages_mut(&mut self) -> &mut DenseSlotMap { &mut self.pages } @@ -69,11 +69,11 @@ impl Library { self.pages.values().collect::>() } - pub fn sections(&self) -> &DenseSlotMap
{ + pub fn sections(&self) -> &DenseSlotMap { &self.sections } - pub fn sections_mut(&mut self) -> &mut DenseSlotMap
{ + pub fn sections_mut(&mut self) -> &mut DenseSlotMap { &mut self.sections } @@ -139,7 +139,7 @@ impl Library { let parent_is_transparent; // We need to get a reference to a section later so keep the scope of borrowing small { - let mut section = self.sections.get_mut(*section_key).unwrap(); + let section = self.sections.get_mut(*section_key).unwrap(); section.pages.push(key); parent_is_transparent = section.meta.transparent; } @@ -236,18 +236,7 @@ impl Library { for (key, (sorted, cannot_be_sorted, sort_by)) in updates { // Find sibling between sorted pages first - let with_siblings = find_siblings( - sorted - .iter() - .map(|k| { - if let Some(page) = self.pages.get(*k) { - (k, page.is_draft()) - } else { - unreachable!("Sorting got an unknown page") - } - }) - .collect(), - ); + let with_siblings = find_siblings(&sorted); for (k2, val1, val2) in with_siblings { if let Some(page) = self.pages.get_mut(k2) { @@ -347,7 +336,7 @@ impl Library { } /// Only used in tests - pub fn get_section_key>(&self, path: P) -> Option<&Key> { + pub fn get_section_key>(&self, path: P) -> Option<&DefaultKey> { self.paths_to_sections.get(path.as_ref()) } @@ -360,15 +349,15 @@ impl Library { .get_mut(self.paths_to_sections.get(path.as_ref()).cloned().unwrap_or_default()) } - pub fn get_section_by_key(&self, key: Key) -> &Section { + pub fn get_section_by_key(&self, key: DefaultKey) -> &Section { self.sections.get(key).unwrap() } - pub fn get_section_mut_by_key(&mut self, key: Key) -> &mut Section { + pub fn get_section_mut_by_key(&mut self, key: DefaultKey) -> &mut Section { self.sections.get_mut(key).unwrap() } - pub fn get_section_path_by_key(&self, key: Key) -> &str { + pub fn get_section_path_by_key(&self, key: DefaultKey) -> &str { &self.get_section_by_key(key).file.relative } @@ -376,11 +365,11 @@ impl Library { self.pages.get(self.paths_to_pages.get(path.as_ref()).cloned().unwrap_or_default()) } - pub fn get_page_by_key(&self, key: Key) -> &Page { + pub fn get_page_by_key(&self, key: DefaultKey) -> &Page { self.pages.get(key).unwrap() } - pub fn get_page_mut_by_key(&mut self, key: Key) -> &mut Page { + pub fn get_page_mut_by_key(&mut self, key: DefaultKey) -> &mut Page { self.pages.get_mut(key).unwrap() } diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index 2fc9203..6a848f8 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use slotmap::Key; +use slotmap::DefaultKey; use tera::{to_value, Context, Tera, Value}; use config::Config; @@ -44,7 +44,7 @@ impl<'a> Pager<'a> { #[derive(Clone, Debug, PartialEq)] pub struct Paginator<'a> { /// All pages in the section/taxonomy - all_pages: &'a [Key], + all_pages: &'a [DefaultKey], /// Pages split in chunks of `paginate_by` pub pagers: Vec>, /// How many content pages on a paginated page at max @@ -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 { @@ -211,10 +208,12 @@ impl<'a> Paginator<'a> { PaginationRoot::Section(s) => { context .insert("section", &SerializingSection::from_section_basic(s, Some(library))); + context.insert("lang", &s.lang); } PaginationRoot::Taxonomy(t, item) => { context.insert("taxonomy", &t.kind); context.insert("term", &item.serialize(library)); + context.insert("lang", &t.kind.lang); } }; context.insert("current_url", &pager.permalink); @@ -281,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/"); } @@ -298,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/"); } @@ -350,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/library/src/sorting.rs b/components/library/src/sorting.rs index c6cfd67..a666a91 100644 --- a/components/library/src/sorting.rs +++ b/components/library/src/sorting.rs @@ -2,12 +2,13 @@ use std::cmp::Ordering; use chrono::NaiveDateTime; use rayon::prelude::*; -use slotmap::Key; +use slotmap::DefaultKey; use content::Page; /// Used by the RSS feed /// There to not have to import sorting stuff in the site crate +#[allow(clippy::trivially_copy_pass_by_ref)] pub fn sort_actual_pages_by_date(a: &&Page, b: &&Page) -> Ordering { let ord = b.meta.datetime.unwrap().cmp(&a.meta.datetime.unwrap()); if ord == Ordering::Equal { @@ -20,7 +21,7 @@ pub fn sort_actual_pages_by_date(a: &&Page, b: &&Page) -> Ordering { /// Takes a list of (page key, date, permalink) and sort them by dates if possible /// Pages without date will be put in the unsortable bucket /// The permalink is used to break ties -pub fn sort_pages_by_date(pages: Vec<(&Key, Option, &str)>) -> (Vec, Vec) { +pub fn sort_pages_by_date(pages: Vec<(&DefaultKey, Option, &str)>) -> (Vec, Vec) { let (mut can_be_sorted, cannot_be_sorted): (Vec<_>, Vec<_>) = pages.into_par_iter().partition(|page| page.1.is_some()); @@ -39,7 +40,7 @@ pub fn sort_pages_by_date(pages: Vec<(&Key, Option, &str)>) -> (V /// Takes a list of (page key, weight, permalink) and sort them by weight if possible /// Pages without weight will be put in the unsortable bucket /// The permalink is used to break ties -pub fn sort_pages_by_weight(pages: Vec<(&Key, Option, &str)>) -> (Vec, Vec) { +pub fn sort_pages_by_weight(pages: Vec<(&DefaultKey, Option, &str)>) -> (Vec, Vec) { let (mut can_be_sorted, cannot_be_sorted): (Vec<_>, Vec<_>) = pages.into_par_iter().partition(|page| page.1.is_some()); @@ -56,53 +57,21 @@ pub fn sort_pages_by_weight(pages: Vec<(&Key, Option, &str)>) -> (Vec) -> Vec<(Key, Option, Option)> { +pub fn find_siblings(sorted: &[DefaultKey]) -> Vec<(DefaultKey, Option, Option)> { let mut res = Vec::with_capacity(sorted.len()); let length = sorted.len(); - for (i, (key, is_draft)) in sorted.iter().enumerate() { - if *is_draft { - res.push((**key, None, None)); - continue; - } - let mut with_siblings = (**key, None, None); + for (i, key) in sorted.iter().enumerate() { + let mut with_siblings = (*key, None, None); if i > 0 { - let mut j = i; - loop { - if j == 0 { - break; - } - - j -= 1; - - if sorted[j].1 { - continue; - } - // lighter / later - with_siblings.1 = Some(*sorted[j].0); - break; - } + // lighter / later + with_siblings.1 = Some(sorted[i - 1]); } if i < length - 1 { - let mut j = i; - loop { - if j == length - 1 { - break; - } - - j += 1; - - if sorted[j].1 { - continue; - } - - // heavier/earlier - with_siblings.2 = Some(*sorted[j].0); - break; - } + // heavier/earlier + with_siblings.2 = Some(sorted[i + 1]); } res.push(with_siblings); } @@ -207,10 +176,9 @@ mod tests { let page3 = create_page_with_weight(3); let key3 = dense.insert(page3.clone()); - let input = - vec![(&key1, page1.is_draft()), (&key2, page2.is_draft()), (&key3, page3.is_draft())]; + let input = vec![key1, key2, key3]; - let pages = find_siblings(input); + let pages = find_siblings(&input); assert_eq!(pages[0].1, None); assert_eq!(pages[0].2, Some(key2)); diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index a82c3e5..8805af4 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use slotmap::Key; +use slotmap::DefaultKey; use slug::slugify; use tera::{Context, Tera}; @@ -44,7 +44,7 @@ pub struct TaxonomyItem { pub name: String, pub slug: String, pub permalink: String, - pub pages: Vec, + pub pages: Vec, } impl TaxonomyItem { @@ -52,7 +52,7 @@ impl TaxonomyItem { name: &str, taxonomy: &TaxonomyConfig, config: &Config, - keys: Vec, + keys: Vec, library: &Library, ) -> Self { // Taxonomy are almost always used for blogs so we filter by dates @@ -113,7 +113,7 @@ impl Taxonomy { fn new( kind: TaxonomyConfig, config: &Config, - items: HashMap>, + items: HashMap>, library: &Library, ) -> Taxonomy { let mut sorted_items = vec![]; @@ -142,6 +142,7 @@ impl Taxonomy { ) -> Result { let mut context = Context::new(); context.insert("config", config); + context.insert("lang", &self.kind.lang); context.insert("term", &SerializedTaxonomyItem::from_item(item, library)); context.insert("taxonomy", &self.kind); context.insert( @@ -168,6 +169,7 @@ impl Taxonomy { self.items.iter().map(|i| SerializedTaxonomyItem::from_item(i, library)).collect(); context.insert("terms", &terms); context.insert("taxonomy", &self.kind); + context.insert("lang", &self.kind.lang); context.insert("current_url", &config.make_permalink(&self.kind.name)); context.insert("current_path", &self.kind.name); @@ -186,33 +188,21 @@ pub fn find_taxonomies(config: &Config, library: &Library) -> Result Result t = Some(x), + "tags" => { + if x.kind.lang == "en" { + t = Some(x) + } + } "categories" => c = Some(x), "auteurs" => a = Some(x), _ => unreachable!(), @@ -466,30 +466,4 @@ mod tests { ); assert_eq!(categories.items[1].pages.len(), 1); } - - #[test] - fn errors_on_taxonomy_of_different_language() { - let mut config = Config::default(); - config.languages.push(Language { rss: false, code: "fr".to_string() }); - let mut library = Library::new(2, 0, false); - - config.taxonomies = - vec![TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }]; - - let mut page1 = Page::default(); - page1.lang = "fr".to_string(); - let mut taxo_page1 = HashMap::new(); - taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); - page1.meta.taxonomies = taxo_page1; - library.insert_page(page1); - - let taxonomies = find_taxonomies(&config, &library); - assert!(taxonomies.is_err()); - let err = taxonomies.unwrap_err(); - // no path as this is created by Default - assert_eq!( - format!("{}", err), - "Page `` has taxonomy `tags` which is not available in that language" - ); - } } diff --git a/components/link_checker/Cargo.toml b/components/link_checker/Cargo.toml index 2c2715d..d40a234 100644 --- a/components/link_checker/Cargo.toml +++ b/components/link_checker/Cargo.toml @@ -6,3 +6,5 @@ authors = ["Vincent Prouillet "] [dependencies] reqwest = "0.9" lazy_static = "1" + +errors = { path = "../errors" } diff --git a/components/link_checker/src/lib.rs b/components/link_checker/src/lib.rs index ce6c36a..10297f9 100644 --- a/components/link_checker/src/lib.rs +++ b/components/link_checker/src/lib.rs @@ -2,8 +2,13 @@ extern crate reqwest; #[macro_use] extern crate lazy_static; +extern crate errors; + use reqwest::header::{HeaderMap, ACCEPT}; use reqwest::StatusCode; + +use errors::Result; + use std::collections::HashMap; use std::error::Error; use std::sync::{Arc, RwLock}; @@ -62,6 +67,12 @@ pub fn check_url(url: &str) -> LinkResult { // Need to actually do the link checking let res = match client.get(url).headers(headers).send() { + Ok(ref mut response) if has_anchor(url) => { + match check_page_for_anchor(url, response.text()) { + Ok(_) => LinkResult { code: Some(response.status()), error: None }, + Err(e) => LinkResult { code: None, error: Some(e.to_string()) }, + } + } Ok(response) => LinkResult { code: Some(response.status()), error: None }, Err(e) => LinkResult { code: None, error: Some(e.description().to_string()) }, }; @@ -70,9 +81,37 @@ pub fn check_url(url: &str) -> LinkResult { res } +fn has_anchor(url: &str) -> bool { + match url.find('#') { + Some(index) => match url.get(index..=index + 1) { + Some("#/") | Some("#!") | None => false, + Some(_) => true, + }, + None => false, + } +} + +fn check_page_for_anchor(url: &str, body: reqwest::Result) -> Result<()> { + let body = body.unwrap(); + let index = url.find('#').unwrap(); + let anchor = url.get(index + 1..).unwrap(); + let checks: [String; 4] = [ + format!(" id='{}'", anchor), + format!(r#" id="{}""#, anchor), + format!(" name='{}'", anchor), + format!(r#" name="{}""#, anchor), + ]; + + if checks.iter().any(|check| body[..].contains(&check[..])) { + Ok(()) + } else { + Err(errors::Error::from(format!("Anchor `#{}` not found on page", anchor))) + } +} + #[cfg(test)] mod tests { - use super::{check_url, LINKS}; + use super::{check_page_for_anchor, check_url, has_anchor, LINKS}; #[test] fn can_validate_ok_links() { @@ -91,4 +130,64 @@ mod tests { assert!(res.code.is_none()); assert!(res.error.is_some()); } + + #[test] + fn can_validate_anchors() { + let url = "https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect"; + let body = "

collect

".to_string(); + let res = check_page_for_anchor(url, Ok(body)); + assert!(res.is_ok()); + } + + #[test] + fn can_validate_anchors_with_other_quotes() { + let url = "https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect"; + let body = r#"

collect

"#.to_string(); + let res = check_page_for_anchor(url, Ok(body)); + assert!(res.is_ok()); + } + + #[test] + fn can_validate_anchors_with_name_attr() { + let url = "https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect"; + let body = r#"

collect

"#.to_string(); + let res = check_page_for_anchor(url, Ok(body)); + assert!(res.is_ok()); + } + + #[test] + fn can_fail_when_anchor_not_found() { + let url = "https://doc.rust-lang.org/std/iter/trait.Iterator.html#me"; + let body = "

collect

".to_string(); + let res = check_page_for_anchor(url, Ok(body)); + assert!(res.is_err()); + } + + #[test] + fn can_check_url_for_anchor() { + let url = "https://doc.rust-lang.org/std/index.html#the-rust-standard-library"; + let res = has_anchor(url); + assert_eq!(res, true); + } + + #[test] + fn will_return_false_when_no_anchor() { + let url = "https://doc.rust-lang.org/std/index.html"; + let res = has_anchor(url); + assert_eq!(res, false); + } + + #[test] + fn will_return_false_when_has_router_url() { + let url = "https://doc.rust-lang.org/#/std"; + let res = has_anchor(url); + assert_eq!(res, false); + } + + #[test] + fn will_return_false_when_has_router_url_alt() { + let url = "https://doc.rust-lang.org/#!/std"; + let res = has_anchor(url); + assert_eq!(res, false); + } } diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index 41b4fc4..02e6367 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -137,6 +137,7 @@ fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { // Updating a section Some(prev) => { site.populate_sections(); + site.process_images()?; { let library = site.library.read().unwrap(); @@ -177,6 +178,7 @@ fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { // New section, only render that one None => { site.populate_sections(); + site.process_images()?; site.register_tera_global_fns(); site.render_section(&site.library.read().unwrap().get_section(&pathbuf).unwrap(), true) } @@ -201,6 +203,7 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { site.populate_sections(); site.populate_taxonomies()?; site.register_tera_global_fns(); + site.process_images()?; { let library = site.library.read().unwrap(); @@ -249,6 +252,7 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { site.populate_taxonomies()?; site.register_early_global_fns(); site.register_tera_global_fns(); + site.process_images()?; // No need to optimise that yet, we can revisit if it becomes an issue site.build() } @@ -306,12 +310,41 @@ pub fn after_content_rename(site: &mut Site, old: &Path, new: &Path) -> Result<( old.to_path_buf() }; site.library.write().unwrap().remove_page(&old_path); - handle_page_editing(site, &new_path) + + let ignored_content_globset = site.config.ignored_content_globset.clone(); + let is_ignored_file = match ignored_content_globset { + Some(gs) => gs.is_match(new), + None => false, + }; + + if !is_ignored_file { + return handle_page_editing(site, &new_path); + } + Ok(()) +} + +fn is_section(path: &str, languages_codes: &[&str]) -> bool { + if path == "_index.md" { + return true; + } + + for language_code in languages_codes { + let lang_section_string = format!("_index.{}.md", language_code); + if path == lang_section_string { + return true; + } + } + + return false; } /// What happens when a section or a page is created/edited pub fn after_content_change(site: &mut Site, path: &Path) -> Result<()> { - let is_section = path.file_name().unwrap() == "_index.md"; + let is_section = { + let languages_codes = site.config.languages_codes(); + is_section(path.file_name().unwrap().to_str().unwrap(), &languages_codes) + }; + let is_md = path.extension().unwrap() == "md"; let index = path.parent().unwrap().join("index.md"); @@ -384,14 +417,19 @@ pub fn after_template_change(site: &mut Site, path: &Path) -> Result<()> { _ => { // If we are updating a shortcode, re-render the markdown of all pages/site // because we have no clue which one needs rebuilding + // Same for the anchor-link template // TODO: look if there the shortcode is used in the markdown instead of re-rendering // everything - if path.components().any(|x| x == Component::Normal("shortcodes".as_ref())) { + if filename == "anchor-link.html" + || path.components().any(|x| x == Component::Normal("shortcodes".as_ref())) + { + println!("Rendering markdown"); site.render_markdown()?; } site.populate_sections(); site.populate_taxonomies()?; site.render_sections()?; + site.process_images()?; site.render_orphan_pages()?; site.render_taxonomies() } diff --git a/components/rendering/Cargo.toml b/components/rendering/Cargo.toml index 121a363..6fe54d5 100644 --- a/components/rendering/Cargo.toml +++ b/components/rendering/Cargo.toml @@ -5,8 +5,8 @@ authors = ["Vincent Prouillet "] [dependencies] tera = { version = "1.0.0-beta.10", features = ["preserve_order"] } -syntect = "3" -pulldown-cmark = "0.5" +syntect = "=3.2.0" +pulldown-cmark = "0.6" slug = "0.1" serde = "1" serde_derive = "1" diff --git a/components/rendering/src/lib.rs b/components/rendering/src/lib.rs index 61742b6..542b32f 100644 --- a/components/rendering/src/lib.rs +++ b/components/rendering/src/lib.rs @@ -32,7 +32,7 @@ use errors::Result; pub use context::RenderContext; use markdown::markdown_to_html; pub use shortcode::render_shortcodes; -pub use table_of_contents::Header; +pub use table_of_contents::Heading; pub fn render_content(content: &str, context: &RenderContext) -> Result { // Don't do shortcodes if there is nothing like a shortcode in the content diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 342b368..437f558 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -9,7 +9,7 @@ use config::highlighting::{get_highlighter, SYNTAX_SET, THEME_SET}; use context::RenderContext; use errors::{Error, Result}; use front_matter::InsertAnchor; -use table_of_contents::{make_table_of_contents, Header}; +use table_of_contents::{make_table_of_contents, Heading}; use utils::site::resolve_internal_link; use utils::vec::InsertMany; @@ -23,23 +23,23 @@ const ANCHOR_LINK_TEMPLATE: &str = "anchor-link.html"; pub struct Rendered { pub body: String, pub summary_len: Option, - pub toc: Vec
, + pub toc: Vec, pub internal_links_with_anchors: Vec<(String, String)>, pub external_links: Vec, } -// tracks a header in a slice of pulldown-cmark events +// tracks a heading in a slice of pulldown-cmark events #[derive(Debug)] -struct HeaderRef { +struct HeadingRef { start_idx: usize, end_idx: usize, - level: i32, + level: u32, id: Option, } -impl HeaderRef { - fn new(start: usize, level: i32) -> HeaderRef { - HeaderRef { start_idx: start, end_idx: 0, level, id: None } +impl HeadingRef { + fn new(start: usize, level: u32) -> HeadingRef { + HeadingRef { start_idx: start, end_idx: 0, level, id: None } } } @@ -77,6 +77,12 @@ fn fix_link( if link_type == LinkType::Email { return Ok(link.to_string()); } + + // TODO: remove me in a few versions when people have upgraded + if link.starts_with("./") && link.contains(".md") { + println!("It looks like the link `{}` is using the previous syntax for internal links: start with @/ instead", link); + } + // A few situations here: // - it could be a relative link (starting with `@/`) // - it could be a link to a co-located asset @@ -119,23 +125,23 @@ fn get_text(parser_slice: &[Event]) -> String { title } -fn get_header_refs(events: &[Event]) -> Vec { - let mut header_refs = vec![]; +fn get_heading_refs(events: &[Event]) -> Vec { + let mut heading_refs = vec![]; for (i, event) in events.iter().enumerate() { match event { - Event::Start(Tag::Header(level)) => { - header_refs.push(HeaderRef::new(i, *level)); + Event::Start(Tag::Heading(level)) => { + heading_refs.push(HeadingRef::new(i, *level)); } - Event::End(Tag::Header(_)) => { - let msg = "Header end before start?"; - header_refs.last_mut().expect(msg).end_idx = i; + Event::End(Tag::Heading(_)) => { + let msg = "Heading end before start?"; + heading_refs.last_mut().expect(msg).end_idx = i; } _ => (), } } - header_refs + heading_refs } pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { @@ -148,7 +154,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result = None; let mut inserted_anchors: Vec = vec![]; - let mut headers: Vec
= vec![]; + let mut headings: Vec = vec![]; let mut internal_links_with_anchors = Vec::new(); let mut external_links = Vec::new(); @@ -241,14 +247,14 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result>(); // We need to collect the events to make a second pass - let mut header_refs = get_header_refs(&events); + let mut heading_refs = get_heading_refs(&events); let mut anchors_to_insert = vec![]; - // First header pass: look for a manually-specified IDs, e.g. `# Heading text {#hash}` + // First heading pass: look for a manually-specified IDs, e.g. `# Heading text {#hash}` // (This is a separate first pass so that auto IDs can avoid collisions with manual IDs.) - for header_ref in header_refs.iter_mut() { - let end_idx = header_ref.end_idx; + for heading_ref in heading_refs.iter_mut() { + let end_idx = heading_ref.end_idx; if let Event::Text(ref mut text) = events[end_idx - 1] { if text.as_bytes().last() == Some(&b'}') { if let Some(mut i) = text.find("{#") { @@ -257,24 +263,24 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result 0 && text.as_bytes()[i - 1] == b' ' { i -= 1; } - header_ref.id = Some(id); + heading_ref.id = Some(id); *text = text[..i].to_owned().into(); } } } } - // Second header pass: auto-generate remaining IDs, and emit HTML - for header_ref in header_refs { - let start_idx = header_ref.start_idx; - let end_idx = header_ref.end_idx; + // Second heading pass: auto-generate remaining IDs, and emit HTML + for heading_ref in heading_refs { + let start_idx = heading_ref.start_idx; + let end_idx = heading_ref.end_idx; let title = get_text(&events[start_idx + 1..end_idx]); let id = - header_ref.id.unwrap_or_else(|| find_anchor(&inserted_anchors, slugify(&title), 0)); + heading_ref.id.unwrap_or_else(|| find_anchor(&inserted_anchors, slugify(&title), 0)); inserted_anchors.push(id.clone()); // insert `id` to the tag - let html = format!("", lvl = header_ref.level, id = id); + let html = format!("", lvl = heading_ref.level, id = id); events[start_idx] = Event::Html(html.into()); // generate anchors and places to insert them @@ -297,10 +303,10 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result Result, + pub children: Vec, } -impl Header { - pub fn new(level: i32) -> Header { - Header { +impl Heading { + pub fn new(level: u32) -> Heading { + Heading { level, id: String::new(), permalink: String::new(), @@ -21,39 +21,49 @@ impl Header { } } -impl Default for Header { +impl Default for Heading { fn default() -> Self { - Header::new(0) + Heading::new(0) } } -/// Converts the flat temp headers into a nested set of headers -/// representing the hierarchy -pub fn make_table_of_contents(headers: Vec
) -> Vec
{ - let mut toc = vec![]; - 'parent: for header in headers { - if toc.is_empty() { - toc.push(header); - continue; +// Takes a potential (mutable) parent and a heading to try and insert into +// Returns true when it performed the insertion, false otherwise +fn insert_into_parent(potential_parent: Option<&mut Heading>, heading: &Heading) -> bool { + match potential_parent { + None => { + // No potential parent to insert into so it needs to be insert higher + false } - - // See if we have to insert as a child of a previous header - for h in toc.iter_mut().rev() { - // Look in its children first - for child in h.children.iter_mut().rev() { - if header.level > child.level { - child.children.push(header); - continue 'parent; - } + Some(parent) => { + if heading.level <= parent.level { + // Heading is same level or higher so we don't insert here + return false; } - if header.level > h.level { - h.children.push(header); - continue 'parent; + if heading.level + 1 == parent.level { + // We have a direct child of the parent + parent.children.push(heading.clone()); + return true; } + // We need to go deeper + if !insert_into_parent(parent.children.iter_mut().last(), heading) { + // No, we need to insert it here + parent.children.push(heading.clone()); + } + true } + } +} - // Nop, just insert it - toc.push(header) +/// Converts the flat temp headings into a nested set of headings +/// representing the hierarchy +pub fn make_table_of_contents(headings: Vec) -> Vec { + let mut toc = vec![]; + for heading in headings { + // First heading or we try to insert the current heading in a previous one + if toc.is_empty() || !insert_into_parent(toc.iter_mut().last(), &heading) { + toc.push(heading); + } } toc @@ -65,7 +75,7 @@ mod tests { #[test] fn can_make_basic_toc() { - let input = vec![Header::new(1), Header::new(1), Header::new(1)]; + let input = vec![Heading::new(1), Heading::new(1), Heading::new(1)]; let toc = make_table_of_contents(input); assert_eq!(toc.len(), 3); } @@ -73,15 +83,15 @@ mod tests { #[test] fn can_make_more_complex_toc() { let input = vec![ - Header::new(1), - Header::new(2), - Header::new(2), - Header::new(3), - Header::new(2), - Header::new(1), - Header::new(2), - Header::new(3), - Header::new(3), + Heading::new(1), + Heading::new(2), + Heading::new(2), + Heading::new(3), + Heading::new(2), + Heading::new(1), + Heading::new(2), + Heading::new(3), + Heading::new(3), ]; let toc = make_table_of_contents(input); assert_eq!(toc.len(), 2); @@ -91,16 +101,59 @@ mod tests { assert_eq!(toc[1].children[0].children.len(), 2); } + #[test] + fn can_make_deep_toc() { + let input = vec![ + Heading::new(1), + Heading::new(2), + Heading::new(3), + Heading::new(4), + Heading::new(5), + Heading::new(4), + ]; + let toc = make_table_of_contents(input); + assert_eq!(toc.len(), 1); + assert_eq!(toc[0].children.len(), 1); + assert_eq!(toc[0].children[0].children.len(), 1); + assert_eq!(toc[0].children[0].children[0].children.len(), 2); + assert_eq!(toc[0].children[0].children[0].children[0].children.len(), 1); + } + + #[test] + fn can_make_deep_messy_toc() { + let input = vec![ + Heading::new(2), // toc[0] + Heading::new(3), + Heading::new(4), + Heading::new(5), + Heading::new(4), + Heading::new(2), // toc[1] + Heading::new(1), // toc[2] + Heading::new(2), + Heading::new(3), + Heading::new(4), + ]; + let toc = make_table_of_contents(input); + assert_eq!(toc.len(), 3); + assert_eq!(toc[0].children.len(), 1); + assert_eq!(toc[0].children[0].children.len(), 2); + assert_eq!(toc[0].children[0].children[0].children.len(), 1); + assert_eq!(toc[1].children.len(), 0); + assert_eq!(toc[2].children.len(), 1); + assert_eq!(toc[2].children[0].children.len(), 1); + assert_eq!(toc[2].children[0].children[0].children.len(), 1); + } + #[test] fn can_make_messy_toc() { let input = vec![ - Header::new(3), - Header::new(2), - Header::new(2), - Header::new(3), - Header::new(2), - Header::new(1), - Header::new(4), + Heading::new(3), + Heading::new(2), + Heading::new(2), + Heading::new(3), + Heading::new(2), + Heading::new(1), + Heading::new(4), ]; let toc = make_table_of_contents(input); println!("{:#?}", toc); diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index 517e163..94777a2 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -332,7 +332,7 @@ fn errors_relative_link_inexistant() { } #[test] -fn can_add_id_to_headers() { +fn can_add_id_to_headings() { let tera_ctx = Tera::default(); let permalinks_ctx = HashMap::new(); let config = Config::default(); @@ -342,7 +342,7 @@ fn can_add_id_to_headers() { } #[test] -fn can_add_id_to_headers_same_slug() { +fn can_add_id_to_headings_same_slug() { let tera_ctx = Tera::default(); let permalinks_ctx = HashMap::new(); let config = Config::default(); @@ -352,7 +352,7 @@ fn can_add_id_to_headers_same_slug() { } #[test] -fn can_handle_manual_ids_on_headers() { +fn can_handle_manual_ids_on_headings() { let tera_ctx = Tera::default(); let permalinks_ctx = HashMap::new(); let config = Config::default(); @@ -361,7 +361,7 @@ fn can_handle_manual_ids_on_headers() { // manual IDs; that duplicates are in fact permitted among manual IDs; that any non-plain-text // in the middle of `{#…}` will disrupt it from being acknowledged as a manual ID (that last // one could reasonably be considered a bug rather than a feature, but test it either way); one - // workaround for the improbable case where you actually want `{#…}` at the end of a header. + // workaround for the improbable case where you actually want `{#…}` at the end of a heading. let res = render_content( "\ # Hello\n\ @@ -389,7 +389,7 @@ fn can_handle_manual_ids_on_headers() { } #[test] -fn blank_headers() { +fn blank_headings() { let tera_ctx = Tera::default(); let permalinks_ctx = HashMap::new(); let config = Config::default(); @@ -409,7 +409,7 @@ fn can_insert_anchor_left() { let res = render_content("# Hello", &context).unwrap(); assert_eq!( res.body, - "

🔗\nHello

\n" + "

🔗Hello

\n" ); } @@ -421,20 +421,20 @@ fn can_insert_anchor_right() { let res = render_content("# Hello", &context).unwrap(); assert_eq!( res.body, - "

Hello🔗\n

\n" + "

Hello🔗

\n" ); } #[test] -fn can_insert_anchor_for_multi_header() { +fn can_insert_anchor_for_multi_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::Right); let res = render_content("# Hello\n# World", &context).unwrap(); assert_eq!( res.body, - "

Hello🔗\n

\n\ -

World🔗\n

\n" + "

Hello🔗

\n\ +

World🔗

\n" ); } @@ -447,7 +447,7 @@ fn can_insert_anchor_with_exclamation_mark() { let res = render_content("# Hello!", &context).unwrap(); assert_eq!( res.body, - "

🔗\nHello!

\n" + "

🔗Hello!

\n" ); } @@ -460,7 +460,7 @@ fn can_insert_anchor_with_link() { let res = render_content("## [Rust](https://rust-lang.org)", &context).unwrap(); assert_eq!( res.body, - "

🔗\nRust

\n" + "

🔗Rust

\n" ); } @@ -472,7 +472,7 @@ fn can_insert_anchor_with_other_special_chars() { let res = render_content("# Hello*_()", &context).unwrap(); assert_eq!( res.body, - "

🔗\nHello*_()

\n" + "

🔗Hello*_()

\n" ); } @@ -490,11 +490,11 @@ fn can_make_toc() { let res = render_content( r#" -# Header 1 +# Heading 1 -## Header 2 +## Heading 2 -## Another Header 2 +## Another Heading 2 ### Last one "#, @@ -522,9 +522,9 @@ fn can_ignore_tags_in_toc() { let res = render_content( r#" -## header with `code` +## heading with `code` -## [anchor](https://duckduckgo.com/) in header +## [anchor](https://duckduckgo.com/) in heading ## **bold** and *italics* "#, @@ -534,11 +534,11 @@ fn can_ignore_tags_in_toc() { let toc = res.toc; - assert_eq!(toc[0].id, "header-with-code"); - assert_eq!(toc[0].title, "header with code"); + assert_eq!(toc[0].id, "heading-with-code"); + assert_eq!(toc[0].title, "heading with code"); - assert_eq!(toc[1].id, "anchor-in-header"); - assert_eq!(toc[1].title, "anchor in header"); + assert_eq!(toc[1].id, "anchor-in-heading"); + assert_eq!(toc[1].title, "anchor in heading"); assert_eq!(toc[2].id, "bold-and-italics"); assert_eq!(toc[2].title, "bold and italics"); @@ -564,7 +564,7 @@ fn can_understand_backtick_in_paragraphs() { // https://github.com/Keats/gutenberg/issues/297 #[test] -fn can_understand_links_in_header() { +fn can_understand_links_in_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); @@ -573,7 +573,7 @@ fn can_understand_links_in_header() { } #[test] -fn can_understand_link_with_title_in_header() { +fn can_understand_link_with_title_in_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); @@ -586,7 +586,7 @@ fn can_understand_link_with_title_in_header() { } #[test] -fn can_understand_emphasis_in_header() { +fn can_understand_emphasis_in_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); @@ -595,7 +595,7 @@ fn can_understand_emphasis_in_header() { } #[test] -fn can_understand_strong_in_header() { +fn can_understand_strong_in_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); @@ -604,7 +604,7 @@ fn can_understand_strong_in_header() { } #[test] -fn can_understand_code_in_header() { +fn can_understand_code_in_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); @@ -614,7 +614,7 @@ fn can_understand_code_in_header() { // See https://github.com/getzola/zola/issues/569 #[test] -fn can_understand_footnote_in_header() { +fn can_understand_footnote_in_heading() { let permalinks_ctx = HashMap::new(); let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); @@ -627,7 +627,7 @@ fn can_understand_footnote_in_header() { } #[test] -fn can_make_valid_relative_link_in_header() { +fn can_make_valid_relative_link_in_heading() { let mut permalinks = HashMap::new(); permalinks.insert("pages/about.md".to_string(), "https://vincent.is/about/".to_string()); let tera_ctx = Tera::default(); @@ -819,3 +819,14 @@ fn doesnt_try_to_highlight_content_from_shortcode() { // let res = render_content(markdown_string, &context).unwrap(); // assert_eq!(res.body, expected); //} + +// https://github.com/getzola/zola/issues/747 +#[test] +fn leaves_custom_url_scheme_untouched() { + let tera_ctx = Tera::default(); + let permalinks_ctx = HashMap::new(); + let config = Config::default(); + let context = RenderContext::new(&tera_ctx, &config, "", &permalinks_ctx, InsertAnchor::None); + let res = render_content("[foo@bar.tld](xmpp:foo@bar.tld)", &context).unwrap(); + assert_eq!(res.body, "

foo@bar.tld

\n"); +} diff --git a/components/search/Cargo.toml b/components/search/Cargo.toml index dbfe736..db2d9cf 100644 --- a/components/search/Cargo.toml +++ b/components/search/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Vincent Prouillet "] [dependencies] elasticlunr-rs = "2" -ammonia = "2" +ammonia = "3" lazy_static = "1" errors = { path = "../errors" } diff --git a/components/search/src/lib.rs b/components/search/src/lib.rs index be935ec..86b8655 100644 --- a/components/search/src/lib.rs +++ b/components/search/src/lib.rs @@ -48,7 +48,9 @@ pub fn build_index(lang: &str, library: &Library) -> Result { let mut index = Index::with_language(language, &["title", "body"]); for section in library.sections_values() { - add_section_to_index(&mut index, section, library); + if section.lang == lang { + add_section_to_index(&mut index, section, library); + } } Ok(index.to_json()) @@ -72,7 +74,7 @@ fn add_section_to_index(index: &mut Index, section: &Section, library: &Library) for key in §ion.pages { let page = library.get_page_by_key(*key); - if !page.meta.in_search_index || page.meta.draft { + if !page.meta.in_search_index { continue; } diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index d87226e..8b1e78f 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)> { @@ -210,6 +219,10 @@ impl Site { page_entries .into_par_iter() + .filter(|entry| match &config.ignored_content_globset { + Some(gs) => !gs.is_match(entry.as_path()), + None => true, + }) .map(|entry| { let path = entry.as_path(); Page::from_file(path, config, &self.base_path) @@ -229,6 +242,10 @@ impl Site { let mut pages_insert_anchors = HashMap::new(); for page in pages { let p = page?; + // Should draft pages be ignored? + if p.meta.draft && !self.include_drafts { + continue; + } pages_insert_anchors.insert( p.file.path.clone(), self.find_parent_section_insert_anchor(&p.file.parent.clone(), &p.lang), @@ -247,7 +264,7 @@ impl Site { // Needs to be done after rendering markdown as we only get the anchors at that point self.check_internal_links_with_anchors()?; - if self.config.check_external_links { + if self.config.is_in_check_mode() { self.check_external_links()?; } @@ -275,6 +292,15 @@ impl Site { }) .flatten(); let all_links = page_links.chain(section_links).collect::>(); + + if self.config.is_in_check_mode() { + println!("Checking {} internal link(s) with an anchor.", all_links.len()); + } + + if all_links.is_empty() { + return Ok(()); + } + let mut full_path = self.base_path.clone(); full_path.push("content"); @@ -308,9 +334,19 @@ impl Site { } }) .collect(); + + if self.config.is_in_check_mode() { + println!( + "> Checked {} internal link(s) with an anchor: {} error(s) found.", + all_links.len(), + errors.len() + ); + } + if errors.is_empty() { return Ok(()); } + let msg = errors .into_iter() .map(|(page_path, md_path, anchor)| { @@ -323,7 +359,7 @@ impl Site { }) .collect::>() .join("\n"); - Err(Error { kind: ErrorKind::Msg(msg.into()), source: None }) + Err(Error { kind: ErrorKind::Msg(msg), source: None }) } pub fn check_external_links(&self) -> Result<()> { @@ -345,6 +381,11 @@ impl Site { }) .flatten(); let all_links = page_links.chain(section_links).collect::>(); + println!("Checking {} external link(s).", all_links.len()); + + if all_links.is_empty() { + return Ok(()); + } // create thread pool with lots of threads so we can fetch // (almost) all pages simultaneously @@ -352,7 +393,7 @@ impl Site { let pool = rayon::ThreadPoolBuilder::new() .num_threads(threads) .build() - .map_err(|e| Error { kind: ErrorKind::Msg(e.to_string().into()), source: None })?; + .map_err(|e| Error { kind: ErrorKind::Msg(e.to_string()), source: None })?; let errors: Vec<_> = pool.install(|| { all_links @@ -368,9 +409,16 @@ impl Site { .collect() }); + println!( + "> Checked {} external link(s): {} error(s) found.", + all_links.len(), + errors.len() + ); + if errors.is_empty() { return Ok(()); } + let msg = errors .into_iter() .map(|(page_path, link, check_res)| { @@ -383,7 +431,7 @@ impl Site { }) .collect::>() .join("\n"); - Err(Error { kind: ErrorKind::Msg(msg.into()), source: None }) + Err(Error { kind: ErrorKind::Msg(msg), source: None }) } /// Insert a default index section for each language if necessary so we don't need to create @@ -486,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.taxonomies), + global_fns::GetTaxonomyUrl::new(&self.config.default_language, &self.taxonomies), ); } @@ -501,7 +549,11 @@ impl Site { ); self.tera.register_function( "get_taxonomy", - global_fns::GetTaxonomy::new(self.taxonomies.clone(), self.library.clone()), + global_fns::GetTaxonomy::new( + &self.config.default_language, + self.taxonomies.clone(), + self.library.clone(), + ), ); } @@ -597,11 +649,12 @@ impl Site { copy_directory( &self.base_path.join("themes").join(theme).join("static"), &self.output_path, + false, )?; } // We're fine with missing static folders if self.static_path.exists() { - copy_directory(&self.static_path, &self.output_path)?; + copy_directory(&self.static_path, &self.output_path, self.config.hard_link_static)?; } Ok(()) @@ -698,7 +751,7 @@ impl Site { .pages_values() .iter() .filter(|p| p.lang == self.config.default_language) - .map(|p| *p) + .cloned() .collect() } else { library.pages_values() @@ -711,7 +764,7 @@ impl Site { continue; } let pages = - library.pages_values().iter().filter(|p| p.lang == lang.code).map(|p| *p).collect(); + library.pages_values().iter().filter(|p| p.lang == lang.code).cloned().collect(); self.render_rss_feed(pages, Some(&PathBuf::from(lang.code.clone())))?; } @@ -728,6 +781,7 @@ impl Site { } pub fn build_search_index(&self) -> Result<()> { + ensure_directory_exists(&self.output_path)?; // index first create_file( &self.output_path.join(&format!("search_index.{}.js", self.config.default_language)), @@ -737,6 +791,18 @@ impl Site { ), )?; + for language in &self.config.languages { + if language.code != self.config.default_language && language.search { + create_file( + &self.output_path.join(&format!("search_index.{}.js", &language.code)), + &format!( + "window.searchIndex = {};", + search::build_index(&language.code, &self.library.read().unwrap())? + ), + )?; + } + } + // then elasticlunr.min.js create_file(&self.output_path.join("elasticlunr.min.js"), search::ELASTICLUNR_JS)?; @@ -873,7 +939,7 @@ impl Site { ) } - /// Renders all taxonomies with at least one non-draft post + /// Renders all taxonomies pub fn render_taxonomies(&self) -> Result<()> { for taxonomy in &self.taxonomies { self.render_taxonomy(taxonomy)?; @@ -990,10 +1056,7 @@ impl Site { ensure_directory_exists(&self.output_path)?; let mut context = Context::new(); - let mut pages = all_pages - .into_iter() - .filter(|p| p.meta.date.is_some() && !p.is_draft()) - .collect::>(); + let mut pages = all_pages.into_iter().filter(|p| p.meta.date.is_some()).collect::>(); // Don't generate a RSS feed if none of the pages has a date if pages.is_empty() { diff --git a/components/site/src/sitemap.rs b/components/site/src/sitemap.rs index 505c30a..72152f7 100644 --- a/components/site/src/sitemap.rs +++ b/components/site/src/sitemap.rs @@ -62,7 +62,6 @@ pub fn find_entries<'a>( let pages = library .pages_values() .iter() - .filter(|p| !p.is_draft()) .map(|p| { let date = match p.meta.date { Some(ref d) => Some(d.to_string()), diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index 1f7822e..7fac192 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -18,8 +18,8 @@ fn can_parse_site() { site.load().unwrap(); let library = site.library.read().unwrap(); - // Correct number of pages (sections do not count as pages) - assert_eq!(library.pages().len(), 22); + // Correct number of pages (sections do not count as pages, draft are ignored) + assert_eq!(library.pages().len(), 21); let posts_path = path.join("content").join("posts"); // Make sure the page with a url doesn't have any sections @@ -42,7 +42,7 @@ fn can_parse_site() { let posts_section = library.get_section(&posts_path.join("_index.md")).unwrap(); assert_eq!(posts_section.subsections.len(), 2); - assert_eq!(posts_section.pages.len(), 10); + assert_eq!(posts_section.pages.len(), 9); // 10 with 1 draft == 9 assert_eq!( posts_section.ancestors, vec![*library.get_section_key(&index_section.file.path).unwrap()] @@ -167,12 +167,12 @@ fn can_build_site_without_live_reload() { assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/posts/simple/" + "https://replace-this-with-your-url.com/posts/simple/" )); assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/posts/" + "https://replace-this-with-your-url.com/posts/" )); // Drafts are not in the sitemap assert!(!file_contains!(public, "sitemap.xml", "draft")); @@ -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) }); @@ -229,7 +230,10 @@ fn can_build_site_with_live_reload() { "posts/python/index.html", r#""# )); - assert!(file_contains!(public, "posts/draft/index.html", r#"THEME_SHORTCODE"#)); + + // Drafts are included + assert!(file_exists!(public, "posts/draft/index.html")); + assert!(file_contains!(public, "sitemap.xml", "draft")); } #[test] @@ -279,7 +283,7 @@ fn can_build_site_with_taxonomies() { assert!(file_contains!( public, "categories/a/rss.xml", - "https%3A//replace-this-with-your-url.com/categories/a/rss.xml" + "https://replace-this-with-your-url.com/categories/a/rss.xml" )); // Extending from a theme works assert!(file_contains!(public, "categories/a/index.html", "EXTENDED")); @@ -290,12 +294,12 @@ fn can_build_site_with_taxonomies() { assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/categories/" + "https://replace-this-with-your-url.com/categories/" )); assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/categories/a/" + "https://replace-this-with-your-url.com/categories/a/" )); } @@ -424,7 +428,7 @@ fn can_build_site_with_pagination_for_section() { assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/posts/page/4/" + "https://replace-this-with-your-url.com/posts/page/4/" )); } @@ -477,7 +481,7 @@ fn can_build_site_with_pagination_for_index() { assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/page/1/" + "https://replace-this-with-your-url.com/page/1/" )) } @@ -558,7 +562,7 @@ fn can_build_site_with_pagination_for_taxonomy() { assert!(file_contains!( public, "sitemap.xml", - "https%3A//replace-this-with-your-url.com/tags/a/page/6/" + "https://replace-this-with-your-url.com/tags/a/page/6/" )) } @@ -642,7 +646,7 @@ fn can_apply_page_templates() { assert_eq!(child.meta.title, Some("Local section override".into())); } -// https%3A//github.com/getzola/zola/issues/571 +// https://github.com/getzola/zola/issues/571 #[test] fn can_build_site_custom_builtins_from_theme() { let (_, _tmp_dir, public) = build_site("test_site"); @@ -652,3 +656,9 @@ fn can_build_site_custom_builtins_from_theme() { assert!(file_exists!(public, "404.html")); assert!(file_contains!(public, "404.html", "Oops")); } + +#[test] +fn can_ignore_markdown_content() { + let (_, _tmp_dir, public) = build_site("test_site"); + assert!(!file_exists!(public, "posts/ignored/index.html")); +} diff --git a/components/site/tests/site_i18n.rs b/components/site/tests/site_i18n.rs index 2ba1b10..a1391f9 100644 --- a/components/site/tests/site_i18n.rs +++ b/components/site/tests/site_i18n.rs @@ -112,30 +112,45 @@ fn can_build_multilingual_site() { // sitemap contains all languages assert!(file_exists!(public, "sitemap.xml")); - assert!(file_contains!(public, "sitemap.xml", "https%3A//example.com/blog/something-else/")); - assert!(file_contains!(public, "sitemap.xml", "https%3A//example.com/fr/blog/something-else/")); - assert!(file_contains!(public, "sitemap.xml", "https%3A//example.com/it/blog/something-else/")); + assert!(file_contains!(public, "sitemap.xml", "https://example.com/blog/something-else/")); + assert!(file_contains!(public, "sitemap.xml", "https://example.com/fr/blog/something-else/")); + assert!(file_contains!(public, "sitemap.xml", "https://example.com/it/blog/something-else/")); // one rss per language assert!(file_exists!(public, "rss.xml")); - assert!(file_contains!(public, "rss.xml", "https%3A//example.com/blog/something-else/")); - assert!(!file_contains!(public, "rss.xml", "https%3A//example.com/fr/blog/something-else/")); + assert!(file_contains!(public, "rss.xml", "https://example.com/blog/something-else/")); + assert!(!file_contains!(public, "rss.xml", "https://example.com/fr/blog/something-else/")); assert!(file_exists!(public, "fr/rss.xml")); - assert!(!file_contains!(public, "fr/rss.xml", "https%3A//example.com/blog/something-else/")); - assert!(file_contains!(public, "fr/rss.xml", "https%3A//example.com/fr/blog/something-else/")); + assert!(!file_contains!(public, "fr/rss.xml", "https://example.com/blog/something-else/")); + assert!(file_contains!(public, "fr/rss.xml", "https://example.com/fr/blog/something-else/")); // Italian doesn't have RSS enabled assert!(!file_exists!(public, "it/rss.xml")); // Taxonomies are per-language + // English assert!(file_exists!(public, "authors/index.html")); assert!(file_contains!(public, "authors/index.html", "Queen")); assert!(!file_contains!(public, "authors/index.html", "Vincent")); assert!(!file_exists!(public, "auteurs/index.html")); assert!(file_exists!(public, "authors/queen-elizabeth/rss.xml")); + assert!(file_exists!(public, "tags/index.html")); + assert!(file_contains!(public, "tags/index.html", "hello")); + assert!(!file_contains!(public, "tags/index.html", "bonjour")); + + // French assert!(!file_exists!(public, "fr/authors/index.html")); assert!(file_exists!(public, "fr/auteurs/index.html")); assert!(!file_contains!(public, "fr/auteurs/index.html", "Queen")); assert!(file_contains!(public, "fr/auteurs/index.html", "Vincent")); assert!(!file_exists!(public, "fr/auteurs/vincent-prouillet/rss.xml")); + + assert!(file_exists!(public, "fr/tags/index.html")); + assert!(file_contains!(public, "fr/tags/index.html", "bonjour")); + assert!(!file_contains!(public, "fr/tags/index.html", "hello")); + + // one lang index per language + assert!(file_exists!(public, "search_index.en.js")); + assert!(file_exists!(public, "search_index.it.js")); + assert!(!file_exists!(public, "search_index.fr.js")); } diff --git a/components/templates/Cargo.toml b/components/templates/Cargo.toml index d802b41..7e8a4c9 100644 --- a/components/templates/Cargo.toml +++ b/components/templates/Cargo.toml @@ -7,13 +7,13 @@ authors = ["Vincent Prouillet "] tera = "1.0.0-beta.10" base64 = "0.10" lazy_static = "1" -pulldown-cmark = "0.5" +pulldown-cmark = "0.6" toml = "0.5" csv = "1" -image = "0.21" +image = "0.22" serde_json = "1.0" reqwest = "0.9" -url = "1.5" +url = "2" errors = { path = "../errors" } utils = { path = "../utils" } diff --git a/components/templates/src/builtins/anchor-link.html b/components/templates/src/builtins/anchor-link.html index cea5e50..4f6256d 100644 --- a/components/templates/src/builtins/anchor-link.html +++ b/components/templates/src/builtins/anchor-link.html @@ -1 +1 @@ -🔗 +🔗 \ No newline at end of file diff --git a/components/templates/src/builtins/rss.xml b/components/templates/src/builtins/rss.xml index 3d5e909..aecb42b 100644 --- a/components/templates/src/builtins/rss.xml +++ b/components/templates/src/builtins/rss.xml @@ -2,18 +2,18 @@ {{ config.title }} - {{ config.base_url | urlencode | safe }} + {{ config.base_url | escape_xml | safe }} {{ config.description }} Zola {{ config.default_language }} - + {{ last_build_date | date(format="%a, %d %b %Y %H:%M:%S %z") }} {% for page in pages %} {{ page.title }} {{ page.date | date(format="%a, %d %b %Y %H:%M:%S %z") }} - {{ page.permalink | urlencode | safe }} - {{ page.permalink | urlencode | safe }} + {{ page.permalink | escape_xml | safe }} + {{ page.permalink | escape_xml | safe }} {% if page.summary %}{{ page.summary }}{% else %}{{ page.content }}{% endif %} {% endfor %} diff --git a/components/templates/src/builtins/sitemap.xml b/components/templates/src/builtins/sitemap.xml index c789e3f..0c2608a 100644 --- a/components/templates/src/builtins/sitemap.xml +++ b/components/templates/src/builtins/sitemap.xml @@ -1,8 +1,8 @@ - + {% for sitemap_entry in entries %} - {{ sitemap_entry.permalink | urlencode | safe }} + {{ sitemap_entry.permalink | escape_xml | safe }} {% if sitemap_entry.date %} {{ sitemap_entry.date }} {% endif %} diff --git a/components/templates/src/builtins/split_sitemap_index.xml b/components/templates/src/builtins/split_sitemap_index.xml index 44b8c12..740e322 100644 --- a/components/templates/src/builtins/split_sitemap_index.xml +++ b/components/templates/src/builtins/split_sitemap_index.xml @@ -1,5 +1,5 @@ - + {% for sitemap in sitemaps %} {{ sitemap }} diff --git a/components/templates/src/filters.rs b/components/templates/src/filters.rs index 133feb8..53b9789 100644 --- a/components/templates/src/filters.rs +++ b/components/templates/src/filters.rs @@ -1,10 +1,14 @@ use std::collections::HashMap; +use std::hash::BuildHasher; use base64::{decode, encode}; use pulldown_cmark as cmark; use tera::{to_value, Result as TeraResult, Value}; -pub fn markdown(value: &Value, args: &HashMap) -> TeraResult { +pub fn markdown( + value: &Value, + args: &HashMap, +) -> TeraResult { let s = try_get_value!("markdown", "value", String, value); let inline = match args.get("inline") { Some(val) => try_get_value!("markdown", "inline", bool, val), @@ -30,12 +34,18 @@ pub fn markdown(value: &Value, args: &HashMap) -> TeraResult) -> TeraResult { +pub fn base64_encode( + value: &Value, + _: &HashMap, +) -> TeraResult { let s = try_get_value!("base64_encode", "value", String, value); Ok(to_value(&encode(s.as_bytes())).unwrap()) } -pub fn base64_decode(value: &Value, _: &HashMap) -> TeraResult { +pub fn base64_decode( + value: &Value, + _: &HashMap, +) -> TeraResult { let s = try_get_value!("base64_decode", "value", String, value); Ok(to_value(&String::from_utf8(decode(s.as_bytes()).unwrap()).unwrap()).unwrap()) } diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index f932eca..c45c949 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -445,7 +445,11 @@ mod tests { args.insert("path".to_string(), to_value("test.css").unwrap()); let result = static_fn.call(&args.clone()).unwrap(); - assert_eq!(result, ".hello {}\n",); + if cfg!(windows) { + assert_eq!(result, ".hello {}\r\n",); + } else { + assert_eq!(result, ".hello {}\n",); + }; } #[test] @@ -456,7 +460,11 @@ mod tests { args.insert("format".to_string(), to_value("plain").unwrap()); let result = static_fn.call(&args.clone()).unwrap(); - assert_eq!(result, "Number,Title\n1,Gutenberg\n2,Printing",); + if cfg!(windows) { + assert_eq!(result, "Number,Title\r\n1,Gutenberg\r\n2,Printing",); + } else { + assert_eq!(result, "Number,Title\n1,Gutenberg\n2,Printing",); + }; } #[test] @@ -467,7 +475,11 @@ mod tests { args.insert("format".to_string(), to_value("plain").unwrap()); let result = static_fn.call(&args.clone()).unwrap(); - assert_eq!(result, ".hello {}\n",); + if cfg!(windows) { + assert_eq!(result, ".hello {}\r\n",); + } else { + assert_eq!(result, ".hello {}\n",); + }; } #[test] diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index 1851295..8ae7d07 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -33,8 +33,12 @@ impl TeraFn for Trans { let key = required_arg!(String, args.get("key"), "`trans` requires a `key` argument."); let lang = optional_arg!(String, args.get("lang"), "`trans`: `lang` must be a string.") .unwrap_or_else(|| self.config.default_language.clone()); - let translations = &self.config.translations[lang.as_str()]; - Ok(to_value(&translations[key.as_str()]).unwrap()) + + let term = self.config.get_translation(lang, key).map_err(|e| { + Error::chain("Failed to retreive term translation", e) + })?; + + Ok(to_value(term).unwrap()) } } @@ -94,8 +98,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 { @@ -176,18 +180,19 @@ impl TeraFn for GetImageMeta { #[derive(Debug)] pub struct GetTaxonomyUrl { taxonomies: HashMap>, + default_lang: String, } impl GetTaxonomyUrl { - pub fn new(all_taxonomies: &[Taxonomy]) -> Self { + pub fn new(default_lang: &str, all_taxonomies: &[Taxonomy]) -> Self { let mut taxonomies = HashMap::new(); - for taxonomy in all_taxonomies { + for taxo in all_taxonomies { let mut items = HashMap::new(); - for item in &taxonomy.items { + for item in &taxo.items { items.insert(item.name.clone(), item.permalink.clone()); } - taxonomies.insert(taxonomy.kind.name.clone(), items); + taxonomies.insert(format!("{}-{}", taxo.kind.name, taxo.kind.lang), items); } - Self { taxonomies } + Self { taxonomies, default_lang: default_lang.to_string() } } } impl TeraFn for GetTaxonomyUrl { @@ -202,7 +207,11 @@ impl TeraFn for GetTaxonomyUrl { args.get("name"), "`get_taxonomy_url` requires a `name` argument with a string value" ); - let container = match self.taxonomies.get(&kind) { + 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, None => { return Err(format!( @@ -289,14 +298,19 @@ impl TeraFn for GetSection { pub struct GetTaxonomy { library: Arc>, taxonomies: HashMap, + default_lang: String, } impl GetTaxonomy { - pub fn new(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(taxo.kind.name.clone(), taxo); + taxonomies.insert(format!("{}-{}", taxo.kind.name, taxo.kind.lang), taxo); } - Self { taxonomies, library } + Self { taxonomies, library, default_lang: default_lang.to_string() } } } impl TeraFn for GetTaxonomy { @@ -307,7 +321,11 @@ impl TeraFn for GetTaxonomy { "`get_taxonomy` requires a `kind` argument with a string value" ); - match self.taxonomies.get(&kind) { + 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()), None => { Err(format!("`get_taxonomy` received an unknown taxonomy as kind: {}", kind).into()) @@ -376,6 +394,11 @@ mod tests { lang: config.default_language.clone(), ..TaxonomyConfig::default() }; + let taxo_config_fr = TaxonomyConfig { + name: "tags".to_string(), + lang: "fr".to_string(), + ..TaxonomyConfig::default() + }; let library = Arc::new(RwLock::new(Library::new(0, 0, false))); let tag = TaxonomyItem::new( "Programming", @@ -384,10 +407,19 @@ mod tests { vec![], &library.read().unwrap(), ); + let tag_fr = TaxonomyItem::new( + "Programmation", + &taxo_config_fr, + &config, + vec![], + &library.read().unwrap(), + ); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; + let tags_fr = Taxonomy { kind: taxo_config_fr, items: vec![tag_fr] }; - let taxonomies = vec![tags.clone()]; - let static_fn = GetTaxonomy::new(taxonomies.clone(), library.clone()); + let taxonomies = vec![tags.clone(), tags_fr.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()); @@ -412,6 +444,19 @@ mod tests { res_obj["items"].clone().as_array().unwrap()[0].clone().as_object().unwrap()["pages"], Value::Array(vec![]) ); + // Works with other languages as well + let mut args = HashMap::new(); + args.insert("kind".to_string(), to_value("tags").unwrap()); + args.insert("lang".to_string(), to_value("fr").unwrap()); + let res = static_fn.call(&args).unwrap(); + let res_obj = res.as_object().unwrap(); + assert_eq!(res_obj["kind"], to_value(tags_fr.kind).unwrap()); + assert_eq!(res_obj["items"].clone().as_array().unwrap().len(), 1); + assert_eq!( + res_obj["items"].clone().as_array().unwrap()[0].clone().as_object().unwrap()["name"], + Value::String("Programmation".to_string()) + ); + // and errors if it can't find it let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("something-else").unwrap()); @@ -426,12 +471,19 @@ mod tests { lang: config.default_language.clone(), ..TaxonomyConfig::default() }; + let taxo_config_fr = TaxonomyConfig { + name: "tags".to_string(), + lang: "fr".to_string(), + ..TaxonomyConfig::default() + }; let library = Library::new(0, 0, false); let tag = TaxonomyItem::new("Programming", &taxo_config, &config, vec![], &library); + let tag_fr = TaxonomyItem::new("Programmation", &taxo_config_fr, &config, vec![], &library); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; + let tags_fr = Taxonomy { kind: taxo_config_fr, items: vec![tag_fr] }; - let taxonomies = vec![tags.clone()]; - let static_fn = GetTaxonomyUrl::new(&taxonomies); + let taxonomies = vec![tags.clone(), tags_fr.clone()]; + let static_fn = GetTaxonomyUrl::new(&config.default_language, &taxonomies); // can find it correctly let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); @@ -440,6 +492,16 @@ mod tests { static_fn.call(&args).unwrap(), to_value("http://a-website.com/tags/programming/").unwrap() ); + // works with other languages + let mut args = HashMap::new(); + args.insert("kind".to_string(), to_value("tags").unwrap()); + args.insert("name".to_string(), to_value("Programmation").unwrap()); + args.insert("lang".to_string(), to_value("fr").unwrap()); + assert_eq!( + static_fn.call(&args).unwrap(), + to_value("http://a-website.com/fr/tags/programmation/").unwrap() + ); + // and errors if it can't find it let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); @@ -447,9 +509,8 @@ mod tests { assert!(static_fn.call(&args).is_err()); } - #[test] - fn can_translate_a_string() { - let trans_config = r#" + + const TRANS_CONFIG: &str = r#" base_url = "https://remplace-par-ton-url.fr" default_language = "fr" @@ -459,10 +520,11 @@ title = "Un titre" [translations.en] title = "A title" - "#; - let config = Config::parse(trans_config).unwrap(); + #[test] + fn can_translate_a_string() { + let config = Config::parse(TRANS_CONFIG).unwrap(); let static_fn = Trans::new(config); let mut args = HashMap::new(); @@ -475,4 +537,26 @@ title = "A title" args.insert("lang".to_string(), to_value("fr").unwrap()); assert_eq!(static_fn.call(&args).unwrap(), "Un titre"); } + + #[test] + fn error_on_absent_translation_lang() { + let mut args = HashMap::new(); + args.insert("lang".to_string(), to_value("absent").unwrap()); + args.insert("key".to_string(), to_value("title").unwrap()); + + let config = Config::parse(TRANS_CONFIG).unwrap(); + let error = Trans::new(config).call(&args).unwrap_err(); + assert_eq!("Failed to retreive term translation", format!("{}", error)); + } + + #[test] + fn error_on_absent_translation_key() { + let mut args = HashMap::new(); + args.insert("lang".to_string(), to_value("en").unwrap()); + args.insert("key".to_string(), to_value("absent").unwrap()); + + let config = Config::parse(TRANS_CONFIG).unwrap(); + let error = Trans::new(config).call(&args).unwrap_err(); + assert_eq!("Failed to retreive term translation", format!("{}", error)); + } } diff --git a/components/utils/Cargo.toml b/components/utils/Cargo.toml index 75f2eeb..8242533 100644 --- a/components/utils/Cargo.toml +++ b/components/utils/Cargo.toml @@ -8,7 +8,7 @@ errors = { path = "../errors" } tera = "1.0.0-beta.10" unicode-segmentation = "1.2" walkdir = "2" -toml = "0.4" +toml = "0.5" serde = "1" [dev-dependencies] diff --git a/components/utils/src/de.rs b/components/utils/src/de.rs index 27259cc..e6ff63d 100644 --- a/components/utils/src/de.rs +++ b/components/utils/src/de.rs @@ -40,7 +40,7 @@ pub fn fix_toml_dates(table: Map) -> Value { for (key, value) in table { match value { - Value::Object(mut o) => { + Value::Object(o) => { new.insert(key, convert_toml_date(o)); } _ => { diff --git a/components/utils/src/fs.rs b/components/utils/src/fs.rs index 20298cb..646f092 100644 --- a/components/utils/src/fs.rs +++ b/components/utils/src/fs.rs @@ -95,7 +95,7 @@ pub fn find_related_assets(path: &Path) -> Vec { /// Copy a file but takes into account where to start the copy as /// there might be folders we need to create on the way -pub fn copy_file(src: &Path, dest: &PathBuf, base_path: &PathBuf) -> Result<()> { +pub fn copy_file(src: &Path, dest: &PathBuf, base_path: &PathBuf, hard_link: bool) -> Result<()> { let relative_path = src.strip_prefix(base_path).unwrap(); let target_path = dest.join(relative_path); @@ -103,11 +103,15 @@ pub fn copy_file(src: &Path, dest: &PathBuf, base_path: &PathBuf) -> Result<()> create_dir_all(parent_directory)?; } - copy(src, target_path)?; + if hard_link { + std::fs::hard_link(src, target_path)? + } else { + copy(src, target_path)?; + } Ok(()) } -pub fn copy_directory(src: &PathBuf, dest: &PathBuf) -> Result<()> { +pub fn copy_directory(src: &PathBuf, dest: &PathBuf, hard_link: bool) -> Result<()> { for entry in WalkDir::new(src).into_iter().filter_map(std::result::Result::ok) { let relative_path = entry.path().strip_prefix(src).unwrap(); let target_path = dest.join(relative_path); @@ -117,7 +121,7 @@ pub fn copy_directory(src: &PathBuf, dest: &PathBuf) -> Result<()> { create_directory(&target_path)?; } } else { - copy_file(entry.path(), dest, src)?; + copy_file(entry.path(), dest, src, hard_link)?; } } Ok(()) diff --git a/components/utils/src/site.rs b/components/utils/src/site.rs index 54bac1c..c846f7a 100644 --- a/components/utils/src/site.rs +++ b/components/utils/src/site.rs @@ -1,4 +1,5 @@ use std::collections::HashMap; +use std::hash::BuildHasher; use unicode_segmentation::UnicodeSegmentation; use errors::Result; @@ -23,9 +24,9 @@ pub struct ResolvedInternalLink { /// Resolves an internal link (of the `@/posts/something.md#hey` sort) to its absolute link and /// returns the path + anchor as well -pub fn resolve_internal_link( +pub fn resolve_internal_link( link: &str, - permalinks: &HashMap, + permalinks: &HashMap, ) -> Result { // First we remove the ./ since that's zola specific let clean_link = link.replacen("@/", "", 1); diff --git a/docs/config.toml b/docs/config.toml index fc847ed..62cc309 100644 --- a/docs/config.toml +++ b/docs/config.toml @@ -7,7 +7,6 @@ highlight_code = true insert_anchor_links = true highlight_theme = "kronuz" build_search_index = true -# check_external_links = true [extra] author = "Vincent Prouillet" diff --git a/docs/content/documentation/content/image-processing/index.md b/docs/content/documentation/content/image-processing/index.md index 32c95d6..c6973af 100644 --- a/docs/content/documentation/content/image-processing/index.md +++ b/docs/content/documentation/content/image-processing/index.md @@ -9,7 +9,7 @@ which is available in template code as well as in shortcodes. The function usage is as follows: ```jinja2 -resize_image(path, width, height, op, quality) +resize_image(path, width, height, op, format, quality) ``` ### Arguments @@ -78,10 +78,16 @@ The source for all examples is this 300 × 380 pixels image: {{ resize_image(path="documentation/content/image-processing/01-zola.png", width=0, height=150, op="fit_height") }} ### **`"fit"`** - Like `"fit_width"` and `"fit_height"` combined. + Like `"fit_width"` and `"fit_height"` combined, but only resize if the image is bigger than any of the specified dimensions. + This mode is handy, if e.g. images are automatically shrinked to certain sizes in a shortcode for mobile optimization. Resizes the image such that the result fits within `width` and `height` preserving aspect ratio. This means that both width or height will be at max `width` and `height`, respectively, but possibly one of them smaller so as to preserve the aspect ratio. + + `resize_image(..., width=5000, height=5000, op="fit")` + + {{ resize_image(path="documentation/content/image-processing/01-zola.png", width=5000, height=5000, op="fit") }} + `resize_image(..., width=150, height=150, op="fit")` {{ resize_image(path="documentation/content/image-processing/01-zola.png", width=150, height=150, op="fit") }} @@ -150,4 +156,4 @@ Here is the result: ## Get image size Sometimes when building a gallery it is useful to know the dimensions of each asset. You can get this information with -[get_image_metadata](./documentation/templates/overview.md#get-image-metadata) \ No newline at end of file +[get_image_metadata](@/documentation/templates/overview.md#get-image-metadata) diff --git a/docs/content/documentation/content/linking.md b/docs/content/documentation/content/linking.md index b4e636e..a758532 100644 --- a/docs/content/documentation/content/linking.md +++ b/docs/content/documentation/content/linking.md @@ -33,7 +33,7 @@ This option is set at the section level: the `insert_anchor_links` variable on t The default template is very basic and will need CSS tweaks in your project to look decent. If you want to change the anchor template, it can easily be overwritten by -creating a `anchor-link.html` file in the `templates` directory. +creating a `anchor-link.html` file in the `templates` directory which gets an `id` variable. ## Internal links Linking to other pages and their headings is so common that Zola adds a diff --git a/docs/content/documentation/content/multilingual.md b/docs/content/documentation/content/multilingual.md index d788972..a6eaba1 100644 --- a/docs/content/documentation/content/multilingual.md +++ b/docs/content/documentation/content/multilingual.md @@ -12,6 +12,7 @@ to your `config.toml`. For example: ```toml languages = [ {code = "fr", rss = true}, # there will be a RSS feed for French content + {code = "fr", search = true}, # there will be a Search Index for French content {code = "it"}, # there won't be a RSS feed for Italian content ] ``` diff --git a/docs/content/documentation/content/page.md b/docs/content/documentation/content/page.md index c1ab276..505f0c0 100644 --- a/docs/content/documentation/content/page.md +++ b/docs/content/documentation/content/page.md @@ -37,8 +37,7 @@ While none of the front-matter variables are mandatory, the opening and closing Here is an example page with all the variables available. The values provided below are the default values. -```md -+++ +```toml title = "" description = "" @@ -55,7 +54,7 @@ date = # will not be rendered. weight = 0 -# A draft page will not be present in prev/next pagination +# 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 @@ -87,9 +86,6 @@ template = "page.html" # Your own data [extra] -+++ - -Some content ``` ## Summary diff --git a/docs/content/documentation/content/section.md b/docs/content/documentation/content/section.md index b0cf13e..41e4a0e 100644 --- a/docs/content/documentation/content/section.md +++ b/docs/content/documentation/content/section.md @@ -33,8 +33,7 @@ Here is an example `_index.md` with all the variables available. The values pro default values. -```md -+++ +```toml title = "" description = "" @@ -95,9 +94,6 @@ aliases = [] # Your own data [extra] -+++ - -Some content ``` Keep in mind that any configuration apply only to the direct pages, not to the subsections' pages. diff --git a/docs/content/documentation/content/taxonomies.md b/docs/content/documentation/content/taxonomies.md index 8b79cf0..606abcf 100644 --- a/docs/content/documentation/content/taxonomies.md +++ b/docs/content/documentation/content/taxonomies.md @@ -28,8 +28,7 @@ categories = ["programming"] +++ ``` -The taxonomy pages will only be created if at least one non-draft page is found and -are available at the following paths: +The taxonomy pages are available at the following paths: ```plain $BASE_URL/$NAME/ diff --git a/docs/content/documentation/deployment/github-pages.md b/docs/content/documentation/deployment/github-pages.md index 049307c..dd50ac5 100644 --- a/docs/content/documentation/deployment/github-pages.md +++ b/docs/content/documentation/deployment/github-pages.md @@ -4,8 +4,7 @@ weight = 30 +++ By default, GitHub Pages uses Jekyll (A ruby based static site generator), -but you can use whatever you want provided you have an `index.html` file in the root of a branch called `gh-pages`. -That branch name can also be manually changed in the settings of a repository. +but you can also publish any generated files provided you have an `index.html` file in the root of a branch called `gh-pages` or `master`, in addition you can also publish from a `docs` directory in your repository. That branch name can also be manually changed in the settings of a repository. **However** this only applies to publishing in a custom domain, i.e. if you want to publish to a GitHub provided web service under the `github.io` domain, you can **only** use the `master` branch of your repository as explained [here](https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages), so we will focus on the method which will work regardless of the domain. We can use any CI server to build and deploy our site. For example: @@ -45,13 +44,15 @@ Make sure "Display value in build log" is off, and then click add. Now Travis ha We're almost done. We just need some scripts in a .travis.yml file to tell Travis what to do. +**NOTE**: The script below assumes that we're taking the code from the `code` branch and will generate the HTML to be published in the `master` branch of the same repository. You're free to use any other branch for the Markdown files but if you want to use `.github.io` or `.github.io`, the destination branch **MUST** be `master`. + ```yaml language: minimal before_script: # Download and unzip the zola executable # Replace the version numbers in the URL by the version you want to use - - curl -s -L https://github.com/getzola/zola/releases/download/v0.8.0/zola-v0.8.0-x86_64-unknown-linux-gnu.tar.gz | sudo tar xvzf - -C /usr/local/bin + - curl -s -L https://github.com/getzola/zola/releases/download/v0.9.0/zola-v0.9.0-x86_64-unknown-linux-gnu.tar.gz | sudo tar xvzf - -C /usr/local/bin script: - zola build @@ -59,12 +60,12 @@ script: # If you are using a different folder than `public` for the output directory, you will # need to change the `zola` command and the `ghp-import` path after_success: | - [ $TRAVIS_BRANCH = master ] && + [ $TRAVIS_BRANCH = code ] && [ $TRAVIS_PULL_REQUEST = false ] && zola build && sudo pip install ghp-import && - ghp-import -n public && - git push -fq https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages + ghp-import -n public -b master && + git push -fq https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git master ``` If your site is using a custom domain, you will need to mention it in the `ghp-import` command: `ghp-import -c vaporsoft.net -n public` diff --git a/docs/content/documentation/deployment/gitlab-pages.md b/docs/content/documentation/deployment/gitlab-pages.md index 090abf2..8bcde42 100644 --- a/docs/content/documentation/deployment/gitlab-pages.md +++ b/docs/content/documentation/deployment/gitlab-pages.md @@ -41,7 +41,7 @@ variables: # This variable will ensure that the CI runner pulls in your theme from the submodule GIT_SUBMODULE_STRATEGY: recursive # Specify the zola version you want to use here - ZOLA_VERSION: "v0.8.0" + ZOLA_VERSION: "v0.9.0" pages: script: diff --git a/docs/content/documentation/deployment/netlify.md b/docs/content/documentation/deployment/netlify.md index 04305ee..a8557b9 100644 --- a/docs/content/documentation/deployment/netlify.md +++ b/docs/content/documentation/deployment/netlify.md @@ -14,8 +14,10 @@ If you don't have an account with Netlify, you can [sign up](https://app.netlify Once you are in the admin interface, you can add a site from a Git provider (GitHub, GitLab or Bitbucket). At the end of this process, you can select the deploy settings for the project: - - build command: `ZOLA_VERSION=0.8.0 zola build` (replace the version number in the variable by the version you want to use) + - build command: `zola build` (replace the version number in the variable by the version you want to use) - publish directory: the path to where the `public` directory is + - image selection: `Ubuntu Xenial 16.04 (default)` + - Environment variables: `ZOLA_VERSION` with for example `0.8.0` as value With this setup, your site should be automatically deployed on every commit on master. For `ZOLA_VERSION`, you may use any of the tagged `release` versions in the GitHub repository — Netlify will automatically fetch the tagged version @@ -36,7 +38,7 @@ command = "zola build" [build.environment] # Set the version name that you want to use and Netlify will automatically use it -ZOLA_VERSION = "0.8.0" +ZOLA_VERSION = "0.9.0" # The magic for deploying previews of branches # We need to override the base url with whatever url Netlify assigns to our diff --git a/docs/content/documentation/getting-started/cli-usage.md b/docs/content/documentation/getting-started/cli-usage.md index 1167981..d31a198 100644 --- a/docs/content/documentation/getting-started/cli-usage.md +++ b/docs/content/documentation/getting-started/cli-usage.md @@ -3,21 +3,29 @@ title = "CLI usage" weight = 2 +++ -Zola only has 3 commands: init, build and serve. +Zola only has 4 commands: `init`, `build`, `serve` and `check`. You can view the help of the whole program by running `zola --help` and the command help by running `zola --help`. ## init -Creates the directory structure used by Zola at the given directory. +Creates the directory structure used by Zola at the given directory after asking a few basic configuration questions. +Any choices made during those prompts can easily be changed by modifying the `config.toml`. ```bash $ zola init my_site +$ zola init ``` -will create a new folder named `my_site` and the files/folders needed by -zola. +If the `my_site` folder already exists, Zola will only populate it if it does not contain non-hidden files (dotfiles are ignored). If no `my_site` argument is passed, Zola will try to populate the current directory. + +You can initialize a git repository and a Zola site directly from within a new folder: + +```bash +$ git init +$ zola init +``` ## build @@ -48,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 @@ -56,6 +66,9 @@ the interface/port combination to use if you want something different than the d You can also specify different addresses for the interface and base_url using `-u`/`--base-url`, for example if you are running zola in a Docker container. +Use the `--open` flag to automatically open the locally hosted instance in your +web browser. + In the event you don't want zola to run a local webserver, you can use the `--watch-only` flag. Before starting, it will delete the public directory to ensure it starts from a clean slate. @@ -68,6 +81,7 @@ $ zola serve --interface 0.0.0.0 --port 2000 $ zola serve --interface 0.0.0.0 --base-url 127.0.0.1 $ zola serve --interface 0.0.0.0 --port 2000 --output-dir www/public $ zola serve --watch-only +$ zola serve --open ``` The serve command will watch all your content and will provide live reload, without @@ -83,10 +97,15 @@ 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 always checks external links regardless of the site configuration. +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 diff --git a/docs/content/documentation/getting-started/configuration.md b/docs/content/documentation/getting-started/configuration.md index 462f8cd..cba1472 100644 --- a/docs/content/documentation/getting-started/configuration.md +++ b/docs/content/documentation/getting-started/configuration.md @@ -41,10 +41,17 @@ generate_rss = false # not set (the default). # rss_limit = 20 +# Whether to copy or hardlink files in static/ directory. Useful for sites +# whose static files are large. Note that for this to work, both static/ and +# output directory need to be on the same filesystem. Also, theme's static/ +# files are always copies, regardles of this setting. False by default. +# hard_link_static = false + # The taxonomies to be rendered for that site and their configuration # Example: # taxonomies = [ # {name = "tags", rss = true}, # each tag will have its own RSS feed +# {name = "tags", lang = "fr"}, # you can have taxonomies with the same name in multiple languages # {name = "categories", paginate_by = 5}, # 5 items per page for a term # {name = "authors"}, # Basic definition: no RSS or pagination # ] @@ -55,6 +62,7 @@ taxonomies = [] # Example: # languages = [ # {code = "fr", rss = true}, # there will be a RSS feed for French content +# {code = "fr", search = true}, # there will be a Search Index for French content # {code = "it"}, # there won't be a RSS feed for Italian content # ] # @@ -121,6 +129,8 @@ Zola currently has the following highlight themes available: - [ayu-light](https://github.com/dempfi/ayu) - [ayu-dark](https://github.com/dempfi/ayu) - [ayu-mirage](https://github.com/dempfi/ayu) +- [Tomorrow](https://tmtheme-editor.herokuapp.com/#!/editor/theme/Tomorrow) +- [one-dark](https://github.com/andresmichel/one-dark-theme) Zola uses the Sublime Text themes, making it very easy to add more. If you want a theme not on that list, please open an issue or a pull request on the [Zola repo](https://github.com/getzola/zola). diff --git a/docs/content/documentation/getting-started/directory-structure.md b/docs/content/documentation/getting-started/directory-structure.md index 015fa6e..0bf979e 100644 --- a/docs/content/documentation/getting-started/directory-structure.md +++ b/docs/content/documentation/getting-started/directory-structure.md @@ -38,6 +38,8 @@ The directory structure of the `sass` folder will be preserved when copying over ## `static` Contains any kind of files. All the files/folders in the `static` folder will be copied as-is in the output directory. +If your static files are large you can configure Zola to [hard link](https://en.wikipedia.org/wiki/Hard_link) them +instead of copying by setting `hard_link_static = true` in the config file. ## `templates` Contains all the [Tera](https://tera.netlify.com) templates that will be used to render this site. diff --git a/docs/content/documentation/templates/pagination.md b/docs/content/documentation/templates/pagination.md index aaa6d6f..d6d4ed1 100644 --- a/docs/content/documentation/templates/pagination.md +++ b/docs/content/documentation/templates/pagination.md @@ -5,33 +5,34 @@ weight = 30 Two things can get paginated: a section and a taxonomy term. -A paginated section gets the same `section` variable as a normal -[section page](@/documentation/templates/pages-sections.md#section-variables) minus its pages -while both a paginated taxonomy page and a paginated section page gets a -`paginator` variable of the `Pager` type: +Both kinds get a `paginator` variable of the `Pager` type, on top of the common variables mentioned in the +[overview page](@/documentation/templates/overview.md): ```ts -// How many items per page +// How many items per pager paginate_by: Number; // The base URL for the pagination: section permalink + pagination path -// You can concatenate an integer with that to get a link to a given pagination page. +// You can concatenate an integer with that to get a link to a given pagination pager. base_url: String; -// How many pagers in this paginator +// How many pagers in total number_pagers: Number; -// Permalink to the first page +// Permalink to the first pager first: String; -// Permalink to the last page +// Permalink to the last pager last: String; -// Permalink to the previous page, if there is one +// Permalink to the previous pager, if there is one previous: String?; -// Permalink to the next page, if there is one +// Permalink to the next pager, if there is one next: String?; -// All pages for the current page +// All pages for the current pager pages: Array; -// Which page are we on +// Which pager are we on current_index: Number; ``` +A pager is a page of the pagination: if you have 100 pages and are paginating 10 by 10, you will have 10 pagers containing +each 10 pages. + ## Section A paginated section gets the same `section` variable as a normal diff --git a/docs/content/documentation/templates/rss.md b/docs/content/documentation/templates/rss.md index 6212f79..8be0a24 100644 --- a/docs/content/documentation/templates/rss.md +++ b/docs/content/documentation/templates/rss.md @@ -8,10 +8,11 @@ generate an `rss.xml` page for the site, which will live at `base_url/rss.xml`. generate the `rss.xml` page, Zola will look for a `rss.xml` file in the `templates` directory or, if one does not exist, will use the use the built-in rss template. -**Only pages with a date and that are not draft will be available.** +**Only pages with a date will be available.** -The RSS template gets two variables in addition of the config: +The RSS template gets three variables in addition of the config: +- `feed_url`: the full url to that specific feed - `last_build_date`: the date of the latest post - `pages`: see [the page variables](@/documentation/templates/pages-sections.md#page-variables) for a detailed description of what this contains diff --git a/docs/content/documentation/templates/taxonomies.md b/docs/content/documentation/templates/taxonomies.md index b901a3d..9b8a70f 100644 --- a/docs/content/documentation/templates/taxonomies.md +++ b/docs/content/documentation/templates/taxonomies.md @@ -43,6 +43,8 @@ current_url: String; current_path: String; // All terms for that taxonomy terms: Array; +// The lang of the current page +lang: String; ``` @@ -58,6 +60,8 @@ current_url: String; current_path: String; // The current term being rendered term: TaxonomyTerm; +// The lang of the current page +lang: String; ``` A paginated taxonomy term will also get a `paginator` variable, see the [pagination page](@/documentation/templates/pagination.md) diff --git a/docs/content/themes/Ergo/index.md b/docs/content/themes/Ergo/index.md index c0dc9a7..04a5d3c 100644 --- a/docs/content/themes/Ergo/index.md +++ b/docs/content/themes/Ergo/index.md @@ -6,7 +6,7 @@ template = "theme.html" date = 2018-09-03T02:13:01-04:00 [extra] -created = 2019-04-06T11:27:43+02:00 +created = 2019-07-12T23:49:55+02:00 updated = 2018-09-03T02:13:01-04:00 repository = "https://github.com/InsidiousMind/Ergo" homepage = "https://github.com/InsidiousMind/Ergo" @@ -23,7 +23,7 @@ homepage = "https://code.liquidthink.net" ![Ergo Screenshot](https://i.imgur.com/l182IYg.jpg) -A light, simple & beautiful Gutenberg theme made with a focus on writing. Inspired by sbvtle and Pixyll. +A light, simple & beautiful Zola theme made with a focus on writing. Inspired by sbvtle and Pixyll. Like both those web designs, Ergo is a theme that emphasizes content, but still tries to be stylish. Frankly, the design is most like sbvtle (http://sbvtle.com) but without the clever svbtle Engine, Javascript, community or kudos button (kudos is on the list of additions, though! But then i'll have to use JS...) @@ -37,17 +37,17 @@ Here's a timelapse: ## Installation -Get [Gutenberg](https://www.getgutenberg.io/) and/or follow their guide on [installing a theme](https://www.getgutenberg.io/documentation/themes/installing-and-using-themes/). +Get [Zola](https://www.getzola.org/) and/or follow their guide on [installing a theme](https://www.getzola.org/documentation/themes/installing-and-using-themes/). Make sure to add `theme = "ergo"` to your `config.toml` -#### Check gutenberg version (only 0.4.1+) +#### Check zola version (only 0.4.1+) Just to double-check to make sure you have the right version. It is not supported to use this theme with a version under 0.4.1. ### how to serve -go into your sites directory, and type `gutenberg serve`. You should see your new site at `localhost:1111`. +go into your sites directory, and type `zola serve`. You should see your new site at `localhost:1111`. ### Deployment to Github Pages or Netlify -[Gutenberg](https://www.getgutenberg.io) already has great documentation for deploying to [Netlify](https://www.getgutenberg.io/documentation/deployment/netlify/) or [Github Pages](https://www.getgutenberg.io/documentation/deployment/github-pages/). I won't bore you with a regurgitated explanation. +[Zola](https://www.getzola.org) already has great documentation for deploying to [Netlify](https://www.getzola.org/documentation/deployment/netlify/) or [Github Pages](https://www.getzola.org/documentation/deployment/github-pages/). I won't bore you with a regurgitated explanation. ### Customizing the Theme All colors used on the site are from `sass/colors.scss`. There's only about 5-6 colors total. @@ -63,7 +63,7 @@ profile = 'profile.svg' website = "code.liquidthink.net" # github -github = "InsidiousMind" # case does not matter +github = "Insipx" # case does not matter # twitter twitter = "liquid_think" # email diff --git a/docs/content/themes/Zulma/index.md b/docs/content/themes/Zulma/index.md new file mode 100644 index 0000000..1ece630 --- /dev/null +++ b/docs/content/themes/Zulma/index.md @@ -0,0 +1,240 @@ + ++++ +title = "Zulma" +description = "A zola theme based off bulma.css" +template = "theme.html" +date = 2019-05-12T22:44:07+01:00 + +[extra] +created = 2019-07-12T23:55:11+02:00 +updated = 2019-05-12T22:44:07+01:00 +repository = "https://github.com/Worble/Zulma" +homepage = "https://github.com/Worble/Zulma" +minimum_version = "0.6.0" +license = "MIT" +demo = "https://festive-morse-47d46c.netlify.com/" + +[extra.author] +name = "Worble" +homepage = "" ++++ + +# Zulma + +A Bulma theme for Zola. See a live preview [here](https://festive-morse-47d46c.netlify.com/) + +![Zulma Screenshot](/screenshot.png) + +## Contents + +- [Zulma](#zulma) + - [Contents](#contents) + - [Installation](#installation) + - [Javascript](#javascript) + - [Sources](#sources) + - [Building](#building) + - [Options](#options) + - [Pagination](#pagination) + - [Taxonomies](#taxonomies) + - [Menu Links](#menu-links) + - [Brand](#brand) + - [Search](#search) + - [Title](#title) + - [Theming](#theming) + - [Original](#original) + - [Known Bugs](#known-bugs) + +## Installation + +First download this theme to your `themes` directory: + +```bash +cd themes +git clone https://github.com/Worble/Zulma +``` + +and then enable it in your `config.toml`: + +```toml +theme = "zulma" +``` + +That's it! No more configuration should be required, however it might look a little basic. Head to the [Options](#options) section to see what you can set for more customizability. + +## Javascript + +### Sources + +All the source javascript files live in `javascript/src`. Following is a list of the javascript files, their purpose, and their sources. All files are prefixed with `zulma_` to avoid any name clashes. + +- `zulma_search.js` - Used when a user types into the search box on the navbar (if enabled). Taken from [Zola's site](https://github.com/getzola/zola/blob/6100a43/docs/static/search.js). +- `zulma_navbar.js` - Used for the mobile navbar toggle. Taken from the [bulma template](https://github.com/dansup/bulma-templates/blob/6263eb7/js/bulma.js) at Bulmaswatch +- `zulma_switchcss.js` - Used for swapping themes (if enabled). + +### Building + +The javascript files are transpiled by babel, minified by webpack, sourcemaps are generated and then everything placed in `static/js`. The repo already contains the transpiled and minified files along with their corrosponding sourcemaps so you don't need to do anything to use these. If you would prefer to build it yourself, feel free to inspect the js files and then run the build process yourself (please ensure that you have [node, npm](https://nodejs.org/en/) and optionally [yarn](https://yarnpkg.com/lang/en/) installed): + +```bash +cd javascript +yarn +yarn webpack +``` + +## Options + +### Pagination + +Zulma makes no assumptions about your project. You can freely paginate your content folder or your taxonomies and it will adapt accordingly. For example, editing or creating section (`content/_index.md`) and setting pagination: + +```toml +paginate_by = 5 +``` + +This is handled internally, no input is needed from the user. + +### Taxonomies + +Zulma has 3 taxonomies already set internally: `tags`, `cateogories` and `authors`. Setting of any these three in your config.toml like so: + +```toml +taxonomies = [ + {name = "categories"}, + {name = "tags", paginate_by = 5, rss = true}, + {name = "authors", rss = true}, +] +``` + +and setting any of them in a content file: + +```toml +[taxonomies] +categories = ["Hello world"] +tags = ["rust", "ssg", "other", "test"] +authors = ["Joe Bloggs"] +``` + +will cause that metadata to appear on the post, either on the header for the name, or at the bottom for tags and categories, and enable those pages. + +Making your own taxonomies is also designed to be as easy as possible. First, add it to your cargo.toml + +```toml +taxonomies = [ + {name = "links"}, +] +``` + +and make the corrosponding folder in your templates, in this case: `templates\links`, and the necessary files: `templates\links\list.html` and `templates\links\single.html` + +And then for each, just inherit the taxonomy master page for that page. Before rendering the content block, you may optionally set a variable called `title` for the hero to display on that page, otherwise it will use the default for that taxonomy. + +In `single.html`: + +```jinja +{%/* extends "Zulma/templates/taxonomy_single.html" */%} +``` + +In `list.html`: + +```jinja +{%/* extends "Zulma/templates/taxonomy_list.html" */%} + +{%/* block content */%} +{%/* set title = "These are all the Links"*/%} +{{/* super() */}} +{%/* endblock content */%} +``` + +### Menu Links + +In extra, setting `zulma_menu` with a list of items will cause them to render to the top menu bar. It has two paramers, `url` and `name`. These _must_ be set. If you put \$BASE_URL in a url, it will automatically be replaced by the actual site URL. This is the easiest way to allow users to navigate to your taxonomies: + +```toml +[extra] +zulma_menu = [ + {url = "$BASE_URL/categories", name = "Categories"}, + {url = "$BASE_URL/tags", name = "Tags"}, + {url = "$BASE_URL/authors", name = "Authors"} +] +``` + +On mobile, a dropdown burger is rendered using javascript. If the page detects javascript is disabled on the clients machine, it will gracefully degrade to always showing the menu (which isn't pretty, but keeps the site functional). + +### Brand + +In extra, setting `zulma_brand` will cause a brand image to display in the upper left of the top menu bar. This link will always lead back to the homepage. It has two parameters, `image`(optional) and `text`(required). `image` will set the brand to an image at the location specified, and `text` will provide the alt text for this image. If you put \$BASE_URL in a url, it will automatically be replaced by the actual site URL. If `image` is not set, the brand will simply be the text specified. + +```toml +[extra] +zulma_brand = {image = "$BASE_URL/images/bulma.png", text = "Home"} +``` + +### Search + +Zulma provides search built in. So long as `build_search_index` is set to `true` in `config.toml` then a search input will appear on the top navigation bar. This requires javascript to be enabled to function; if the page detects javascript is disabled on the clients machine, it will hide itself. + +The search is shamefully stolen from [Zola's site](https://github.com/getzola/zola/blob/master/docs/static/search.js). Thanks, Vincent! + +### Title + +In extra, setting `zulma_title` will set a hero banner on the index page to appear with that title inside. + +```toml +[extra] +zulma_title = "Blog" +``` + +If you want to get fancy with it, you can set an image behind using sass like so: + +```scss +.index .hero-body { + background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Plum_trees_Kitano_Tenmangu.jpg/1200px-Plum_trees_Kitano_Tenmangu.jpg); + background-position: center; + background-size: cover; + background-repeat: no-repeat; + background-color: rgba(0, 0, 0, 0.6); + background-blend-mode: overlay; +} +``` + +This will set the image behind the hero, and darken it so the main text can still be easily read. + +### Theming + +In extra, setting `zulma_theme` to a valid value will change the current colour scheme to that one. All themes were taken from [Bulmaswatch](https://jenil.github.io/bulmaswatch/). Valid theme values are: + +- default +- darkly +- flatly +- pulse +- simplex +- lux +- slate +- solar +- superhero + +All valid themes can also be found under the `extra.zulma_themes` variable in the `theme.toml`. Choosing no theme will set default as the theme. Setting an invalid theme value will cause the site to render improperly. + +```toml +[extra] +zulma_theme = "darkly" +``` + +Additionally, in extra, you can also set the `zulma_allow_theme_selection` boolean. Setting this to `true` will allow a menu in the footer to allow users to select their own theme. This option will store their theme choice in their localstorage and apply it on every page, assuming `zulma_allow_theme_selection` is still true. This requires javascript to be enabled to function; if the page detects javascript is disabled on the clients machine, it will hide itself. + +Each theme contains the entirety of Bulma, and will weigh in at ~180kb. If you're running on a server severely limited on space, then I'd recommend you delete each theme you're not using, either from the source or from `/public`. Obviously, doing this will cause `zulma_allow_theme_selection` to work improperly, so make sure you either override `extra.zulma_themes` in `config.toml` to only show themes you have left or to not enable this option at all. + +```toml +[extra] +zulma_allow_theme_selection = true +``` + +## Original + +This template is based on the [blog template](https://dansup.github.io/bulma-templates/templates/blog.html) over at [Free Bulma Templates](https://dansup.github.io/bulma-templates/). All themes were taken from [Bulmaswatch](https://jenil.github.io/bulmaswatch/). The code behind from originally adapted from the [after-dark](https://github.com/getzola/after-dark/blob/master/README.md) zola template. + +## Known Bugs + +- If user theme swapping is enabled and the user selects a theme different to the default, a slight delay will be introduced in page rendering as the css gets swapped out and in by the javascript. This is particularly pronounced when using the dark theme, since it will flash white before going back to black. This is better than the alternative flashes of unstyled content or old theme, but still annoying. I don't know any way around this, but with browser caching it should be fast enough to not cause serious issues. + + \ No newline at end of file diff --git a/docs/content/themes/Zulma/screenshot.png b/docs/content/themes/Zulma/screenshot.png new file mode 100644 index 0000000..5373667 Binary files /dev/null and b/docs/content/themes/Zulma/screenshot.png differ diff --git a/docs/content/themes/even/index.md b/docs/content/themes/even/index.md index 94fb19d..5046005 100644 --- a/docs/content/themes/even/index.md +++ b/docs/content/themes/even/index.md @@ -6,7 +6,7 @@ template = "theme.html" date = 2018-01-25T18:44:44+01:00 [extra] -created = 2019-04-06T11:27:43+02:00 +created = 2019-07-12T23:49:55+02:00 updated = 2018-01-25T18:44:44+01:00 repository = "https://github.com/getzola/even" homepage = "https://github.com/getzola/even" @@ -116,4 +116,4 @@ katex_enable = true katex_auto_render = true ``` - + \ No newline at end of file diff --git a/docs/content/themes/feather/index.md b/docs/content/themes/feather/index.md index 8ebf4d3..ad3a945 100644 --- a/docs/content/themes/feather/index.md +++ b/docs/content/themes/feather/index.md @@ -6,7 +6,7 @@ template = "theme.html" date = 2018-01-21T04:35:36-05:00 [extra] -created = 2019-04-06T11:27:43+02:00 +created = 2019-07-12T23:49:55+02:00 updated = 2018-01-21T04:35:36-05:00 repository = "https://github.com/piedoom/feather" homepage = "https://github.com/piedoom/feather" diff --git a/docs/content/themes/hallo/index.md b/docs/content/themes/hallo/index.md new file mode 100644 index 0000000..83caee4 --- /dev/null +++ b/docs/content/themes/hallo/index.md @@ -0,0 +1,136 @@ + ++++ +title = "hallo" +description = "A single-page theme to introduce yourself." +template = "theme.html" +date = 2019-06-05T15:08:48+02:00 + +[extra] +created = 2019-07-12T23:55:11+02:00 +updated = 2019-06-05T15:08:48+02:00 +repository = "https://github.com/flyingP0tat0/zola-hallo.git" +homepage = "https://github.com/janbaudisch/zola-hallo" +minimum_version = "0.4.0" +license = "MIT" +demo = "https://zola-hallo.janbaudisch.dev" + +[extra.author] +name = "Jan Baudisch" +homepage = "https://janbaudisch.dev" ++++ + +[![Build Status][build-img]][build-url] +[![Demo][demo-img]][demo-url] + +# Hallo + +> A single-page theme to introduce yourself. +> +> [Zola][zola] port of [hallo-hugo][hallo-hugo]. + +![Screenshot](screenshot.png) + +## Original + +This is a port of the original [hallo-hugo][hallo-hugo] theme for Hugo ([License][upstream-license]). + +## Installation + +The easiest way to install this theme is to either clone it ... + +``` +git clone https://github.com/janbaudisch/zola-hallo.git themes/hallo +``` + +... or to use it as a submodule. + +``` +git submodule add https://github.com/janbaudisch/zola-hallo.git themes/hallo +``` + +Either way, you will have to enable the theme in your `config.toml`. + +```toml +theme = "hallo" +``` + +### Introduction + +The introduction text is included from `templates/partials/introduction.html`. + +You will need to create this file and fill it with content. + + +## Options + +See [`config.toml`][config] for an example configuration. + +### Author + +The given name will be used for the 'I am ...' text. + +Default: `Hallo` + +```toml +[extra.author] +name = "Hallo" +``` + +### Greeting + +The string will be used as a greeting. + +Default: `Hello!` + +```toml +[extra] +greeting = "Hello!" +``` + +### `iam` + +This variable defines the `I am` text, which you may want to swap out for another language. + +Default: `I am` + +```toml +[extra] +iam = "I am" +``` + +### Links + +Links show up below the introduction. They are styled with [Font Awesome][fontawesome], you may optionally choose the iconset (default is [brands][fontawesome-brands]). + +```toml +[extra] +links = [ + { title = "E-Mail", url = "mailto:mail@example.org", iconset = "fas", icon = "envelope" }, + { title = "GitHub", url = "https://github.com", icon = "github" }, + { title = "Twitter", url = "https://twitter.com", icon = "twitter" } +] +``` + +### Theme + +Change the colors used. + +```toml +[extra.theme] +background = "#6FCDBD" +foreground = "#FFF" # text and portrait border +hover = "#333" # link hover +``` + +[build-img]: https://travis-ci.com/janbaudisch/zola-hallo.svg?branch=master +[build-url]: https://travis-ci.com/janbaudisch/zola-hallo +[demo-img]: https://img.shields.io/badge/demo-live-green.svg +[demo-url]: https://zola-hallo.janbaudisch.dev +[zola]: https://www.getzola.org +[hallo-hugo]: https://github.com/EmielH/hallo-hugo +[fontawesome]: https://fontawesome.com +[fontawesome-brands]: https://fontawesome.com/icons?d=gallery&s=brands&m=free +[upstream-license]: https://github.com/janbaudisch/zola-hallo/blob/master/upstream/LICENSE +[config]: https://github.com/janbaudisch/zola-hallo/blob/master/config.toml + + \ No newline at end of file diff --git a/docs/content/themes/hallo/screenshot.png b/docs/content/themes/hallo/screenshot.png new file mode 100644 index 0000000..da242a0 Binary files /dev/null and b/docs/content/themes/hallo/screenshot.png differ diff --git a/docs/content/themes/sam/index.md b/docs/content/themes/sam/index.md new file mode 100644 index 0000000..300bfd8 --- /dev/null +++ b/docs/content/themes/sam/index.md @@ -0,0 +1,168 @@ + ++++ +title = "sam" +description = "A Simple and Minimalist theme with a focus on typography and content." +template = "theme.html" +date = 2019-07-02T17:55:24+02:00 + +[extra] +created = 2019-07-02T17:55:24+02:00 +updated = 2019-07-02T17:55:24+02:00 +repository = "https://github.com/janbaudisch/zola-sam.git" +homepage = "https://github.com/janbaudisch/zola-sam" +minimum_version = "0.4.0" +license = "AGPL-3.0" +demo = "https://zola-sam.janbaudisch.dev" + +[extra.author] +name = "Jan Baudisch" +homepage = "https://janbaudisch.dev" ++++ + +[![Build Status][build-img]][build-url] +[![Demo][demo-img]][demo-url] + +# Sam + +> A Simple and Minimalist theme with a focus on typography and content. +> +> [Zola][zola] port of [hugo-theme-sam][hugo-sam]. + +![Screenshot](screenshot.png) + +## Original + +This is a port of the original [hugo-theme-sam][hugo-sam] theme for Hugo ([License][upstream-license]). + +See [`upstream`][upstream] for source code take from there. + +## Installation + +The easiest way to install this theme is to either clone it ... + +``` +git clone https://github.com/janbaudisch/zola-sam.git themes/sam +``` + +... or to use it as a submodule. + +``` +git submodule add https://github.com/janbaudisch/zola-sam.git themes/sam +``` + +Either way, you will have to enable the theme in your `config.toml`. + +```toml +theme = "sam" +``` + +## Options + +See [`config.toml`][config] for an example configuration. + +### Menu + +The menu on the index page is created as follows: If the `sam_menu` variable is set, it gets used. + +```toml +[extra] +sam_menu = [ + { text = "posts", link = "/posts" }, + { text = "about", link = "/about" }, + { text = "github", link = "https://github.com" } +] +``` + +If it is not set, all sections under `content` will get linked. + +#### Bottom menu + +This variable decides wether the menu - as mentioned above - will also be displayed at the bottom of pages. + +Default: `false` + +```toml +[extra] +sam_bottom_menu = true +``` + +### `home` + +Sets the name for all links referring to the home page in the menus and the 404 page. + +Default: `home` + +```toml +[extra] +home = "home" +``` + +### Date format + +Specifies how to display dates. The format is described [here][date-format-docs]. + +Default: `%a %b %e, %Y` + +```toml +[extra] +date_format = "%a %b %e, %Y" +``` + +### Word count and reading time + +You can enable or disable word count and reading time for posts across the whole site: + +Default: `true` (both) + +```toml +[extra] +show_word_count = true +show_reading_time = true +``` + +If enabled, you can opt-out per page via front-matter: + +Default: `false` (both) + +``` ++++ +[extra] +hide_word_count = true +hide_reading_time = true ++++ +``` + +### Disable page header + +If you want to disable the complete header of a page (for example a page which is explicitly not a post), you can do so via front-matter: + +Default: `false` + +``` ++++ +[extra] +no_header = true ++++ +``` + +### Footer + +To place some text at the end of pages, set the following: + +```toml +[extra.sam_footer] +text = "Some footer text." +``` + +[build-img]: https://travis-ci.com/janbaudisch/zola-sam.svg?branch=master +[build-url]: https://travis-ci.com/janbaudisch/zola-sam +[demo-img]: https://img.shields.io/badge/demo-live-green.svg +[demo-url]: https://zola-sam.janbaudisch.dev +[zola]: https://getzola.org +[hugo-sam]: https://github.com/victoriadotdev/hugo-theme-sam +[upstream]: https://github.com/janbaudisch/zola-sam/blob/master/upstream +[upstream-license]: https://github.com/janbaudisch/zola-sam/blob/master/upstream/LICENSE +[config]: https://github.com/janbaudisch/zola-sam/blob/master/config.toml +[date-format-docs]: https://docs.rs/chrono/latest/chrono/format/strftime/index.html + + \ No newline at end of file diff --git a/docs/content/themes/sam/screenshot.png b/docs/content/themes/sam/screenshot.png new file mode 100644 index 0000000..81e8c68 Binary files /dev/null and b/docs/content/themes/sam/screenshot.png differ diff --git a/docs/content/themes/zola-theme-hikari/index.md b/docs/content/themes/zola-theme-hikari/index.md index 317ec74..c4ab31f 100644 --- a/docs/content/themes/zola-theme-hikari/index.md +++ b/docs/content/themes/zola-theme-hikari/index.md @@ -6,7 +6,7 @@ template = "theme.html" date = 2019-01-27T19:57:59+01:00 [extra] -created = 2019-04-06T11:27:43+02:00 +created = 2019-07-12T23:49:55+02:00 updated = 2019-01-27T19:57:59+01:00 repository = "https://github.com/waynee95/zola-theme-hikari" homepage = "https://github.com/waynee95/zola-theme-hikari" @@ -21,13 +21,13 @@ homepage = "https://waynee95.me" # hikari -> this is a port of the [hikari theme](https://github.com/mx3m/hikari-for-jekyll) for Zola +> this is a port of the [hikari theme](https://github.com/mx3m/hikari-for-jekyll) for [Zola](https://www.getzola.org/) Hikari is a simple theme perfect for dev-savvy bloggers. ![screenshot](screenshot.png) -[View demo](https://waynee95.me/zola-theme-hikari) +[View demo](https://waynee95.github.io/zola-theme-hikari/) ## Installation diff --git a/docs/static/processed_images/e8e628f3be10e77c00.png b/docs/static/processed_images/e8e628f3be10e77c00.png new file mode 100644 index 0000000..4cf656b Binary files /dev/null and b/docs/static/processed_images/e8e628f3be10e77c00.png differ diff --git a/docs/templates/index.html b/docs/templates/index.html index a511790..cf191a7 100644 --- a/docs/templates/index.html +++ b/docs/templates/index.html @@ -99,7 +99,7 @@ {% endblock content %} diff --git a/docs/templates/shortcodes/gallery.html b/docs/templates/shortcodes/gallery.html index e50f823..91a75f4 100644 --- a/docs/templates/shortcodes/gallery.html +++ b/docs/templates/shortcodes/gallery.html @@ -3,6 +3,5 @@ -   {%- endif %} {%- endfor %} diff --git a/snapcraft.yaml b/snapcraft.yaml index c8a8624..f099c8f 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -1,5 +1,5 @@ name: zola -version: 0.8.0 +version: 0.9.0 summary: A fast static site generator in a single binary with everything built-in. description: | A fast static site generator in a single binary with everything built-in. @@ -21,7 +21,7 @@ parts: zola: source-type: git source: https://github.com/getzola/zola.git - source-tag: v0.8.0 + source-tag: v0.9.0 plugin: rust rust-channel: stable build-packages: diff --git a/src/cli.rs b/src/cli.rs index 368224d..0598e75 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -19,7 +19,7 @@ pub fn build_cli() -> App<'static, 'static> { .about("Create a new Zola project") .arg( Arg::with_name("name") - .required(true) + .default_value(".") .help("Name of the project. Will create a new directory with that name in the current directory") ), SubCommand::with_name("build") @@ -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") @@ -65,9 +69,24 @@ pub fn build_cli() -> App<'static, 'static> { Arg::with_name("watch_only") .long("watch-only") .takes_value(false) - .help("Do not start a server, just re-build project on changes") + .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") + .takes_value(false) + .help("Open site in the default browser"), ]), 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 aca974e..7ac1edc 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 32b6cb4..29fba3a 100644 --- a/src/cmd/check.rs +++ b/src/cmd/check.rs @@ -6,19 +6,24 @@ use site::Site; use console; -pub fn check(config_file: &str, base_path: Option<&str>, base_url: Option<&str>) -> Result<()> { - let bp = base_path.map(PathBuf::from).unwrap_or(env::current_dir().unwrap()); +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 - site.config.check_external_links = true; - // Disable syntax highlighting since the results won't be used - // and this operation can be expensive. - site.config.highlight_code = false; + site.config.enable_check_mode(); 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::check_site_summary(&site); console::warn_about_ignored_pages(&site); Ok(()) } diff --git a/src/cmd/init.rs b/src/cmd/init.rs index b263482..92c0556 100644 --- a/src/cmd/init.rs +++ b/src/cmd/init.rs @@ -25,15 +25,54 @@ build_search_index = %SEARCH% # Put all your custom variables here "#; +// Given a path, return true if it is a directory and it doesn't have any +// non-hidden files, otherwise return false (path is assumed to exist) +pub fn is_directory_quasi_empty(path: &Path) -> Result { + if path.is_dir() { + let mut entries = match path.read_dir() { + Ok(entries) => entries, + Err(e) => { + bail!( + "Could not read `{}` because of error: {}", + path.to_string_lossy().to_string(), + e + ); + } + }; + // If any entry raises an error or isn't hidden (i.e. starts with `.`), we raise an error + if entries.any(|x| match x { + Ok(file) => !file + .file_name() + .to_str() + .expect("Could not convert filename to &str") + .starts_with('.'), + Err(_) => true, + }) { + return Ok(false); + } + return Ok(true); + } + + Ok(false) +} + pub fn create_new_project(name: &str) -> Result<()> { let path = Path::new(name); // Better error message than the rust default - if path.exists() && path.is_dir() { - bail!("Folder `{}` already exists", 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() + ) + } } - create_dir(path)?; console::info("Welcome to Zola!"); + console::info("Please answer a few questions to get started quickly."); + console::info("Any choices made can be changed by modifying the `config.toml` file later."); let base_url = ask_url("> What is the URL of your site?", "https://example.com")?; let compile_sass = ask_bool("> Do you want to enable Sass compilation?", true)?; @@ -47,6 +86,7 @@ pub fn create_new_project(name: &str) -> Result<()> { .replace("%SEARCH%", &format!("{}", search)) .replace("%HIGHLIGHT%", &format!("{}", highlight)); + create_dir(path)?; create_file(&path.join("config.toml"), &config)?; create_dir(path.join("content"))?; @@ -66,3 +106,60 @@ pub fn create_new_project(name: &str) -> Result<()> { println!("Visit https://www.getzola.org for the full documentation."); Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + use std::env::temp_dir; + use std::fs::{create_dir, remove_dir, remove_dir_all}; + + #[test] + fn init_empty_directory() { + let mut dir = temp_dir(); + dir.push("test_empty_dir"); + if dir.exists() { + remove_dir_all(&dir).expect("Could not free test directory"); + } + create_dir(&dir).expect("Could not create test directory"); + let allowed = is_directory_quasi_empty(&dir) + .expect("An error happened reading the directory's contents"); + remove_dir(&dir).unwrap(); + assert_eq!(true, allowed); + } + + #[test] + fn init_non_empty_directory() { + let mut dir = temp_dir(); + dir.push("test_non_empty_dir"); + if dir.exists() { + remove_dir_all(&dir).expect("Could not free test directory"); + } + create_dir(&dir).expect("Could not create test directory"); + let mut content = dir.clone(); + content.push("content"); + create_dir(&content).unwrap(); + let allowed = is_directory_quasi_empty(&dir) + .expect("An error happened reading the directory's contents"); + remove_dir(&content).unwrap(); + remove_dir(&dir).unwrap(); + assert_eq!(false, allowed); + } + + #[test] + fn init_quasi_empty_directory() { + let mut dir = temp_dir(); + dir.push("test_quasi_empty_dir"); + if dir.exists() { + remove_dir_all(&dir).expect("Could not free test directory"); + } + create_dir(&dir).expect("Could not create test directory"); + let mut git = dir.clone(); + git.push(".git"); + create_dir(&git).unwrap(); + let allowed = is_directory_quasi_empty(&dir) + .expect("An error happened reading the directory's contents"); + remove_dir(&git).unwrap(); + remove_dir(&dir).unwrap(); + assert_eq!(true, allowed); + } +} diff --git a/src/cmd/livereload.js b/src/cmd/livereload.js index 6dd6d19..ae58083 100644 --- a/src/cmd/livereload.js +++ b/src/cmd/livereload.js @@ -1 +1 @@ -!function e(t,n,o){function i(s,l){if(!n[s]){if(!t[s]){var c="function"==typeof require&&require;if(!l&&c)return c(s,!0);if(r)return r(s,!0);var a=Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}var h=n[s]={exports:{}};t[s][0].call(h.exports,function(e){var n=t[s][1][e];return i(n?n:e)},h,h.exports,e,t,n,o)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;st;t++)e=o[t],(e.href&&e.rel.match(/^stylesheet\/less$/i)||e.rel.match(/stylesheet/i)&&e.type.match(/^text\/(x-)?less$/i))&&i.push(e);return i}(),0===t.length)return!1;for(n=0,o=t.length;o>n;n++)e=t[n],e.href=this.host.generateCacheBustUrl(e.href);return this.host.console.log("LiveReload is asking LESS to recompile all stylesheets"),this.window.less.refresh(!0),!0},e.prototype.analyze=function(){return{disable:!(!this.window.less||!this.window.less.refresh)}},e}()}).call(this)},{}],4:[function(e,t,n){(function(){var t,o,i,r,s;t=e("./connector").Connector,s=e("./timer").Timer,i=e("./options").Options,r=e("./reloader").Reloader,n.LiveReload=o=function(){function e(e){return this.window=e,this.listeners={},this.plugins=[],this.pluginIdentifiers={},this.console=this.window.location.href.match(/LR-verbose/)&&this.window.console&&this.window.console.log&&this.window.console.error?this.window.console:{log:function(){},error:function(){}},(this.WebSocket=this.window.WebSocket||this.window.MozWebSocket)?(this.options=i.extract(this.window.document))?(this.reloader=new r(this.window,this.console,s),void(this.connector=new t(this.options,this.WebSocket,s,{connecting:function(){return function(){}}(this),socketConnected:function(){return function(){}}(this),connected:function(e){return function(t){var n;return"function"==typeof(n=e.listeners).connect&&n.connect(),e.log("LiveReload is connected to "+e.options.host+":"+e.options.port+" (protocol v"+t+")."),e.analyze()}}(this),error:function(){return function(e){console.log(e)}}(this),disconnected:function(e){return function(t,n){var o;switch("function"==typeof(o=e.listeners).disconnect&&o.disconnect(),t){case"cannot-connect":return e.log("LiveReload cannot connect to "+e.options.host+":"+e.options.port+", will retry in "+n+" sec.");case"broken":return e.log("LiveReload disconnected from "+e.options.host+":"+e.options.port+", reconnecting in "+n+" sec.");case"handshake-timeout":return e.log("LiveReload cannot connect to "+e.options.host+":"+e.options.port+" (handshake timeout), will retry in "+n+" sec.");case"handshake-failed":return e.log("LiveReload cannot connect to "+e.options.host+":"+e.options.port+" (handshake failed), will retry in "+n+" sec.");case"manual":break;case"error":break;default:return e.log("LiveReload disconnected from "+e.options.host+":"+e.options.port+" ("+t+"), reconnecting in "+n+" sec.")}}}(this),message:function(e){return function(t){switch(t.command){case"reload":return e.performReload(t);case"alert":return e.performAlert(t)}}}(this)}))):void this.console.error("LiveReload disabled because it could not find its own