Hugo migration (#2720)

* Move files to a Hugo structure

Signed-off-by: Tony Batard <tbatard@pivotal.io>
pull/2817/head
Tony Batard 2020-08-13 09:09:15 -07:00 committed by GitHub
parent 681123596f
commit c663ce15ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1304 changed files with 8353 additions and 6302 deletions

12
.gitignore vendored
View File

@ -38,14 +38,8 @@ Tiltfile
.vscode
*.diff
# Jekyll compiled data
site/_site
site/.sass-cache
site/.jekyll
site/.jekyll-metadata
site/.jekyll-cache
site/.bundle
site/vendor
.ruby-version
# Hugo compiled data
site/public
site/resources
.vs

View File

@ -36,6 +36,8 @@ BUILDER_IMAGE_TAG := $(shell git log -1 --pretty=%h hack/build-image/Dockerfile)
BUILDER_IMAGE := $(REGISTRY)/build-image:$(BUILDER_IMAGE_TAG)
BUILDER_IMAGE_CACHED := $(shell docker images -q ${BUILDER_IMAGE} 2>/dev/null )
HUGO_IMAGE := hugo-builder
# Which architecture to build - see $(ALL_ARCH) for options.
# if the 'local' rule is being run, detect the ARCH from 'go env'
# if it wasn't specified by the caller.
@ -264,6 +266,9 @@ push-build-image:
@# credentials needed to accomplish this.
docker push $(BUILDER_IMAGE)
build-image-hugo:
cd site && docker build --pull -t $(HUGO_IMAGE) .
clean:
# if we have a cached image then use it to run go clean --modcache
# this test checks if we there is an image id in the BUILDER_IMAGE_CACHED variable.
@ -272,6 +277,7 @@ ifneq ($(strip $(BUILDER_IMAGE_CACHED)),)
docker rmi -f $(BUILDER_IMAGE) || true
endif
rm -rf .go _output
docker rmi $(HUGO_IMAGE)
.PHONY: modules
@ -314,14 +320,13 @@ release:
PUBLISH=$(PUBLISH) \
./hack/goreleaser.sh'"
serve-docs:
serve-docs: build-image-hugo
docker run \
--rm \
-v "$$(pwd)/site:/srv/jekyll" \
-it -p 4000:4000 \
jekyll/jekyll \
jekyll serve --livereload --incremental
-v "$$(pwd)/site:/srv/hugo" \
-it -p 1313:1313 \
$(HUGO_IMAGE) \
hugo server --bind=0.0.0.0 --enableGitInfo=false
# gen-docs generates a new versioned docs directory under site/docs. It follows
# the following process:
# 1. Copies the contents of the most recently tagged docs directory into the new
@ -333,7 +338,7 @@ serve-docs:
# 4. Copies the previous version's ToC file and runs 'git add' to establish
# a useful baseline to diff against.
# 5. Replaces the content of the new ToC file with the master ToC.
# 6. Update site/_config.yml and site/_data/toc-mapping.yml to include entries
# 6. Update site/config.yaml and site/_data/toc-mapping.yml to include entries
# for the new version.
#
# The unstaged changes in the working directory can now easily be diff'ed against the

View File

@ -0,0 +1 @@
Migrate site from Jekyll to Hugo

View File

@ -1,6 +1,6 @@
#!/bin/bash
# Copyright 2019 the Velero contributors.
# Copyright 2020 the Velero contributors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -21,88 +21,94 @@ set -o errexit
set -o nounset
set -o pipefail
DOCS_DIRECTORY=site/content/docs
DATA_DOCS_DIRECTORY=site/data/docs
CONFIG_FILE=site/config.yaml
MAIN_BRANCH=main
# don't run if there's already a directory for the target docs version
if [[ -d site/docs/$NEW_DOCS_VERSION ]]; then
echo "ERROR: site/docs/$NEW_DOCS_VERSION already exists"
if [[ -d $DOCS_DIRECTORY/$NEW_DOCS_VERSION ]]; then
echo "ERROR: $DOCS_DIRECTORY/$NEW_DOCS_VERSION already exists"
exit 1
fi
# get the alphabetically last item in site/docs to use as PREVIOUS_DOCS_VERSION
# get the alphabetically last item in $DOCS_DIRECTORY to use as PREVIOUS_DOCS_VERSION
# if not explicitly specified by the user
if [[ -z "${PREVIOUS_DOCS_VERSION:-}" ]]; then
echo "PREVIOUS_DOCS_VERSION was not specified, getting the latest version"
PREVIOUS_DOCS_VERSION=$(ls -1 site/docs/ | tail -n 1)
PREVIOUS_DOCS_VERSION=$(ls -1 $DOCS_DIRECTORY/ | tail -n 1)
fi
# make a copy of the previous versioned docs dir
echo "Creating copy of docs directory site/docs/$PREVIOUS_DOCS_VERSION in site/docs/$NEW_DOCS_VERSION"
cp -r site/docs/${PREVIOUS_DOCS_VERSION}/ site/docs/${NEW_DOCS_VERSION}/
echo "Creating copy of docs directory $DOCS_DIRECTORY/$PREVIOUS_DOCS_VERSION in $DOCS_DIRECTORY/$NEW_DOCS_VERSION"
cp -r $DOCS_DIRECTORY/${PREVIOUS_DOCS_VERSION}/ $DOCS_DIRECTORY/${NEW_DOCS_VERSION}/
# 'git add' the previous version's docs as-is so we get a useful diff when we copy the main docs in
# 'git add' the previous version's docs as-is so we get a useful diff when we copy the $MAIN_BRANCH docs in
echo "Running 'git add' for previous version's doc contents to use as a base for diff"
git add site/docs/${NEW_DOCS_VERSION}
git add -f $DOCS_DIRECTORY/${NEW_DOCS_VERSION}
# now copy the contents of site/docs/main into the same directory so we can get a nice
# now copy the contents of $DOCS_DIRECTORY/$MAIN_BRANCH into the same directory so we can get a nice
# git diff of what changed since previous version
echo "Copying site/docs/main/ to site/docs/${NEW_DOCS_VERSION}/"
rm -rf site/docs/${NEW_DOCS_VERSION}/ && cp -r site/docs/main/ site/docs/${NEW_DOCS_VERSION}/
echo "Copying $DOCS_DIRECTORY/$MAIN_BRANCH/ to $DOCS_DIRECTORY/${NEW_DOCS_VERSION}/"
rm -rf $DOCS_DIRECTORY/${NEW_DOCS_VERSION}/ && cp -r $DOCS_DIRECTORY/$MAIN_BRANCH/ $DOCS_DIRECTORY/${NEW_DOCS_VERSION}/
# make a copy of the previous versioned ToC
NEW_DOCS_TOC="$(echo ${NEW_DOCS_VERSION} | tr . -)-toc"
PREVIOUS_DOCS_TOC="$(echo ${PREVIOUS_DOCS_VERSION} | tr . -)-toc"
echo "Creating copy of site/_data/$PREVIOUS_DOCS_TOC.yml at site/_data/$NEW_DOCS_TOC.yml"
cp site/_data/$PREVIOUS_DOCS_TOC.yml site/_data/$NEW_DOCS_TOC.yml
echo "Creating copy of $DATA_DOCS_DIRECTORY/$PREVIOUS_DOCS_TOC.yml at $DATA_DOCS_DIRECTORY/$NEW_DOCS_TOC.yml"
cp $DATA_DOCS_DIRECTORY/$PREVIOUS_DOCS_TOC.yml $DATA_DOCS_DIRECTORY/$NEW_DOCS_TOC.yml
# 'git add' the previous version's ToC content as-is so we get a useful diff when we copy the main ToC in
# 'git add' the previous version's ToC content as-is so we get a useful diff when we copy the $MAIN_BRANCH ToC in
echo "Running 'git add' for previous version's ToC to use as a base for diff"
git add site/_data/$NEW_DOCS_TOC.yml
git add $DATA_DOCS_DIRECTORY/$NEW_DOCS_TOC.yml
# now copy the main ToC so we can get a nice git diff of what changed since previous version
echo "Copying site/_data/main-toc.yml to site/_data/$NEW_DOCS_TOC.yml"
rm site/_data/$NEW_DOCS_TOC.yml && cp site/_data/main-toc.yml site/_data/$NEW_DOCS_TOC.yml
# now copy the $MAIN_BRANCH ToC so we can get a nice git diff of what changed since previous version
echo "Copying $DATA_DOCS_DIRECTORY/$MAIN_BRANCH-toc.yml to $DATA_DOCS_DIRECTORY/$NEW_DOCS_TOC.yml"
rm $DATA_DOCS_DIRECTORY/$NEW_DOCS_TOC.yml && cp $DATA_DOCS_DIRECTORY/$MAIN_BRANCH-toc.yml $DATA_DOCS_DIRECTORY/$NEW_DOCS_TOC.yml
# replace known version-specific links -- the sed syntax is slightly different in OS X and Linux,
# so check which OS we're running on.
if [[ $(uname) == "Darwin" ]]; then
echo "[OS X] updating version-specific links"
find site/docs/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i '' "s|https://velero.io/docs/main|https://velero.io/docs/$VELERO_VERSION|g"
find site/docs/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i '' "s|https://github.com/vmware-tanzu/velero/blob/main|https://github.com/vmware-tanzu/velero/blob/$VELERO_VERSION|g"
find $DOCS_DIRECTORY/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i '' "s|https://velero.io/docs/$MAIN_BRANCH|https://velero.io/docs/$VELERO_VERSION|g"
find $DOCS_DIRECTORY/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i '' "s|https://github.com/vmware-tanzu/velero/blob/$MAIN_BRANCH|https://github.com/vmware-tanzu/velero/blob/$VELERO_VERSION|g"
find $DOCS_DIRECTORY/${NEW_DOCS_VERSION} -type f -name "_index.md" | xargs sed -i '' "s|version: $MAIN_BRANCH|version: $NEW_DOCS_VERSION|g"
echo "[OS X] Updating latest version in _config.yml"
sed -i '' "s/latest: ${PREVIOUS_DOCS_VERSION}/latest: ${NEW_DOCS_VERSION}/" site/_config.yml
echo "[OS X] Updating latest version in $CONFIG_FILE"
sed -i '' "s/latest: ${PREVIOUS_DOCS_VERSION}/latest: ${NEW_DOCS_VERSION}/" $CONFIG_FILE
# newlines and lack of indentation are requirements for this sed syntax
# which is doing an append
echo "[OS X] Adding latest version to versions list in _config.yml"
sed -i '' "/- main/a\\
- ${NEW_DOCS_VERSION}
" site/_config.yml
echo "[OS X] Adding latest version to versions list in $CONFIG_FILE"
sed -i '' "/- $MAIN_BRANCH/a\\
\ \ \ \ - ${NEW_DOCS_VERSION}
" $CONFIG_FILE
echo "[OS X] Adding ToC mapping entry"
sed -i '' "/main: main-toc/a\\
sed -i '' "/$MAIN_BRANCH: $MAIN_BRANCH-toc/a\\
${NEW_DOCS_VERSION}: ${NEW_DOCS_TOC}
" site/_data/toc-mapping.yml
" $DATA_DOCS_DIRECTORY/toc-mapping.yml
else
echo "[Linux] updating version-specific links"
find site/docs/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i'' "s|https://velero.io/docs/main|https://velero.io/docs/$VELERO_VERSION|g"
find site/docs/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i'' "s|https://github.com/vmware-tanzu/velero/blob/main|https://github.com/vmware-tanzu/velero/blob/$VELERO_VERSION|g"
find $DOCS_DIRECTORY/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i'' "s|https://velero.io/docs/$MAIN_BRANCH|https://velero.io/docs/$VELERO_VERSION|g"
find $DOCS_DIRECTORY/${NEW_DOCS_VERSION} -type f -name "*.md" | xargs sed -i'' "s|https://github.com/vmware-tanzu/velero/blob/$MAIN_BRANCH|https://github.com/vmware-tanzu/velero/blob/$VELERO_VERSION|g"
echo "[Linux] Updating latest version in _config.yml"
sed -i'' "s/latest: ${PREVIOUS_DOCS_VERSION}/latest: ${NEW_DOCS_VERSION}/" site/_config.yml
echo "[Linux] Updating latest version in $CONFIG_FILE"
sed -i'' "s/latest: ${PREVIOUS_DOCS_VERSION}/latest: ${NEW_DOCS_VERSION}/" $CONFIG_FILE
echo "[Linux] Adding latest version to versions list in _config.yml"
sed -i'' "/- main/a - ${NEW_DOCS_VERSION}" site/_config.yml
echo "[Linux] Adding latest version to versions list in $CONFIG_FILE"
sed -i'' "/- $MAIN_BRANCH/a - ${NEW_DOCS_VERSION}" $CONFIG_FILE
echo "[Linux] Adding ToC mapping entry"
sed -i'' "/main: main-toc/a ${NEW_DOCS_VERSION}: ${NEW_DOCS_TOC}" site/_data/toc-mapping.yml
sed -i'' "/$MAIN_BRANCH: $MAIN_BRANCH-toc/a ${NEW_DOCS_VERSION}: ${NEW_DOCS_TOC}" $DATA_DOCS_DIRECTORY/toc-mapping.yml
fi
echo "Success! site/docs/$NEW_DOCS_VERSION has been created."
echo "Success! $DOCS_DIRECTORY/$NEW_DOCS_VERSION has been created."
echo ""
echo "The next steps are:"
echo " 1. Consult site/README-JEKYLL.md for further manual steps required to finalize the new versioned docs generation."
echo " 1. Consult site/README-HUGO.md for further manual steps required to finalize the new versioned docs generation."
echo " 2. Run a 'git diff' to review all changes made to the docs since the previous version."
echo " 3. Make any manual changes/corrections necessary."
echo " 4. Run 'git add' to stage all unstaged changes, then 'git commit'."

View File

@ -1,10 +1,12 @@
[build]
base = "site/"
command = "jekyll build"
publish = "site/_site"
command = "hugo --gc --minify --baseURL $BASE_URL"
publish = "site/public"
# Using the * -> :splat rule should redirect anything under master to the matching file under main
[[redirects]]
from = "/docs/master/*"
to = "/docs/main/:splat"
[context.production.environment]
HUGO_VERSION = "0.73.0"
BASE_URL = "https://velero.io"
[context.deploy-preview.environment]
HUGO_VERSION = "0.73.0"
BASE_URL = "https://deploy-preview-2720--velero.netlify.app"

9
site/Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM ubuntu:20.04
RUN apt update
RUN apt install -y hugo
WORKDIR /srv/hugo
EXPOSE 1313

View File

@ -1,12 +0,0 @@
source 'https://rubygems.org'
gem 'jekyll', '~> 4.1.0'
gem 'jekyll-feed', '~> 0.13.0'
gem 'jekyll-optional-front-matter', '~> 0.3.2'
gem 'jekyll-paginate', '~> 1.1'
gem 'jekyll-readme-index', '~> 0.3.0'
gem 'jekyll-redirect-from', '~> 0.16.0'
gem 'jekyll-relative-links', '~> 0.6.1'
gem 'jekyll-sitemap', '~> 1.4'
gem 'jekyll-titles-from-headings', '~> 0.5.3'
gem 'jekyll-seo-tag', '~> 2.6', '>= 2.6.1'
gem 'jemoji'

View File

@ -1,116 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.3.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2, >= 2.2.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.6)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
ffi (1.13.1)
forwardable-extended (2.6.0)
gemoji (3.0.1)
html-pipeline (2.13.0)
activesupport (>= 2)
nokogiri (>= 1.4)
http_parser.rb (0.6.0)
i18n (1.8.3)
concurrent-ruby (~> 1.0)
jekyll (4.1.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.4.0)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 1.8)
jekyll-feed (0.13.0)
jekyll (>= 3.7, < 5.0)
jekyll-optional-front-matter (0.3.2)
jekyll (>= 3.0, < 5.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.3.0)
jekyll (>= 3.0, < 5.0)
jekyll-redirect-from (0.16.0)
jekyll (>= 3.3, < 5.0)
jekyll-relative-links (0.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0)
jekyll-seo-tag (2.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-titles-from-headings (0.5.3)
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
jemoji (0.12.0)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
kramdown (2.3.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.2.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
mini_portile2 (2.4.0)
minitest (5.14.1)
nokogiri (1.10.9)
mini_portile2 (~> 2.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.5)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.4)
rouge (3.20.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
tzinfo (1.2.7)
thread_safe (~> 0.1)
unicode-display_width (1.7.0)
zeitwerk (2.3.0)
PLATFORMS
ruby
DEPENDENCIES
jekyll (~> 4.1.0)
jekyll-feed (~> 0.13.0)
jekyll-optional-front-matter (~> 0.3.2)
jekyll-paginate (~> 1.1)
jekyll-readme-index (~> 0.3.0)
jekyll-redirect-from (~> 0.16.0)
jekyll-relative-links (~> 0.6.1)
jekyll-seo-tag (~> 2.6, >= 2.6.1)
jekyll-sitemap (~> 1.4)
jekyll-titles-from-headings (~> 0.5.3)
jemoji
BUNDLED WITH
2.1.4

46
site/README-HUGO.md Normal file
View File

@ -0,0 +1,46 @@
# Running in Docker
To run this site in a Docker container, you can use `make serve-docs` from the root directory.
# Dependencies for MacOS
Install the following for an easy to use dev environment:
* `brew install hugo`
# Dependencies for Linux
If you are running a build on Ubuntu you will need the following packages:
* hugo
# Local Development
1. Clone down your own fork, or clone the main repo `git clone https://github.com/vmware-tanzu/velero` and add your own remote.
1. `cd velero/site`
1. Serve the site and watch for markup/sass changes `hugo serve`.
1. View your website at http://127.0.0.1:1313/
1. Commit any changes and push everything to your fork.
1. Once you're ready, submit a PR of your changes. Netlify will automatically generate a preview of your changes.
# Jetbrains IDE setup (IntelliJ, Goland, etc)
1. Install the `Hugo Integration` plugin: https://plugins.jetbrains.com/plugin/13215-hugo-integration
- Under `Preferences...` -> `Plugins`
1. Create a new configuration:
- Click `Edit Configurations...`
- Click the `+` button to create a new configuration and select `Hugo`
- Select `hugo serve` and make sure it is running under the `site` directory
- Save and run the new Configuration
- View your website at http://127.0.0.1:1313/
- Any changes in `site` will reload the website automatically
# Adding a New Docs Version
To add a new set of versioned docs to go with a new Velero release:
1. In the root of the repository, run:
```bash
# set to the appropriate version numbers
NEW_DOCS_VERSION=vX.Y VELERO_VERSION=vX.Y.Z make gen-docs
```
1. [Pre-release only] In `site/config.yaml`, revert the change to the `latest` field, so the pre-release docs do not become the default.

View File

@ -1,49 +0,0 @@
# Running in Docker
To run this site in a Docker container, you can use `make serve-docs` from the root directory.
# Dependencies for MacOS
Install the following for an easy to use dev environment:
* `brew install rbenv`
* `rbenv install 2.6.3`
* `gem install bundler`
# Dependencies for Linux
If you are running a build on Ubuntu you will need the following packages:
* ruby
* ruby-dev
* ruby-bundler
* build-essential
* zlib1g-dev
* nginx (or apache2)
# Local Development
1. Install Jekyll and plug-ins in one fell swoop. `gem install github-pages`
This mirrors the plug-ins used by GitHub Pages on your local machine including Jekyll, Sass, etc.
2. Clone down your own fork, or clone the main repo `git clone https://github.com/vmware-tanzu/velero` and add your own remote.
3. `cd velero/site`
4. `rbenv local 2.6.3`
5. `bundle install`
6. Serve the site and watch for markup/sass changes `jekyll serve --livereload --incremental`. You may need to run `bundle exec jekyll serve --livereload --incremental`.
7. View your website at http://127.0.0.1:4000/
8. Commit any changes and push everything to your fork.
9. Once you're ready, submit a PR of your changes. Netlify will automatically generate a preview of your changes.
# Adding a New Docs Version
To add a new set of versioned docs to go with a new Velero release:
1. In the root of the repository, run:
```bash
# set to the appropriate version numbers
NEW_DOCS_VERSION=vX.Y VELERO_VERSION=vX.Y.Z make gen-docs
```
1. In `site/_config.yml`, under the `defaults` field, add an entry for the new version just under `main` by copying the most recent version's entry and updating the version numbers.
1. [Pre-release only] In `site/_config.yml`, revert the change to the `latest` field, so the pre-release docs do not become the default.

View File

@ -1,233 +0,0 @@
# Site settings
title: Velero
email:
author: Velero Authors
description: Backup and migrate Kubernetes resources and persistent volumes
#url: velero.io
logo: Velero.svg
twitter:
username: projectvelero
card: summary
vm_logo: vm-logo.png
gh_repo: https://github.com/vmware-tanzu/velero
markdown: kramdown
hero:
background-color: med-blue
footer:
title: Getting Started
content: To help you get started, see the documentation.
cta_title: ''
cta_url: /docs
cta_text: Documentation
vm-link: http://vmware.github.io/
footer_social_links:
Twitter:
fa_icon: fab fa-twitter
url: https://twitter.com/projectvelero
Slack:
fa_icon: fab fa-slack
url: https://kubernetes.slack.com/messages/velero
Google Groups:
fa_icon: fas fa-users
url: https://groups.google.com/forum/#!forum/projectvelero
RSS:
fa_icon: fa fa-rss
url: feed.xml
GitHub:
fa_icon: fab fa-github
url: https://github.com/vmware-tanzu/velero
defaults:
- scope:
path: "" # an empty string here means all files in the project
type: "posts"
values:
layout: "posts"
- scope:
path: ""
type: "pages"
values:
layout: "default"
- scope:
path: docs/main
values:
version: main
gh: https://github.com/vmware-tanzu/velero/tree/main
layout: "docs"
- scope:
path: docs/v1.4
values:
version: v1.4
gh: https://github.com/vmware-tanzu/velero/tree/v1.4.0
layout: "docs"
- scope:
path: docs/v1.3.2
values:
version: v1.3.2
gh: https://github.com/vmware-tanzu/velero/tree/v1.3.2
layout: "docs"
- scope:
path: docs/v1.3.1
values:
version: v1.3.1
gh: https://github.com/vmware-tanzu/velero/tree/v1.3.1
layout: "docs"
- scope:
path: docs/v1.3.0
values:
version: v1.3.0
gh: https://github.com/vmware-tanzu/velero/tree/v1.3.0
layout: "docs"
- scope:
path: docs/v1.2.0
values:
version: v1.2.0
gh: https://github.com/vmware-tanzu/velero/tree/v1.2.0
layout: "docs"
- scope:
path: docs/v1.1.0
values:
version: v1.1.0
gh: https://github.com/vmware-tanzu/velero/tree/v1.1.0
layout: "docs"
- scope:
path: docs/v1.0.0
values:
version: v1.0.0
gh: https:/github.com/vmware-tanzu/velero/tree/v1.0.0
layout: "docs"
- scope:
path: docs/v0.11.0
values:
version: v0.11.0
gh: https:/github.com/vmware-tanzu/velero/tree/v0.11.0
layout: "docs"
- scope:
path: docs/v0.10.0
values:
version: v0.10.0
gh: https:/github.com/vmware-tanzu/velero/tree/v0.10.0
layout: "docs"
- scope:
path: docs/v0.9.0
values:
version: v0.9.0
gh: https:/github.com/vmware-tanzu/velero/tree/v0.9.0
layout: "docs"
- scope:
path: docs/v0.8.1
values:
version: v0.8.1
gh: https:/github.com/vmware-tanzu/velero/tree/v0.8.1
layout: "docs"
- scope:
path: docs/v0.8.0
values:
version: v0.8.0
gh: https:/github.com/vmware-tanzu/velero/tree/v0.8.0
layout: "docs"
- scope:
path: docs/v0.7.1
values:
version: v0.7.1
gh: https://github.com/vmware-tanzu/velero/tree/v0.7.1
layout: "docs"
- scope:
path: docs/v0.7.0
values:
version: v0.7.0
gh: https://github.com/vmware-tanzu/velero/tree/v0.7.0
layout: "docs"
- scope:
path: docs/v0.6.0
values:
version: v0.6.0
gh: https://github.com/vmware-tanzu/velero/tree/v0.6.0
layout: "docs"
- scope:
path: docs/v0.5.0
values:
version: v0.5.0
gh: https://github.com/vmware-tanzu/velero/tree/v0.5.0
layout: "docs"
- scope:
path: docs/v0.4.0
values:
version: v0.4.0
gh: https://github.com/vmware-tanzu/velero/tree/v0.4.0
layout: "docs"
- scope:
path: docs/v0.3.0
values:
version: v0.3.0
gh: https://github.com/vmware-tanzu/velero/tree/v0.3.0
layout: "docs"
page_gen:
- data: shortlinks
template: redirect
name: key
dir: docs
collections:
- contributors
- casestudies
- plugin-list
versioning: true
latest: v1.4
versions:
- main
- v1.4
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.0
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8.1
- v0.8.0
- v0.7.1
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.0
# Build settings
permalink: /blog/:title/
sass:
sass_dir: css
style: :compressed
# Use the following plug-ins
plugins:
- jekyll-readme-index # use README.md as index.html
- jekyll-sitemap # Create a sitemap using the official Jekyll sitemap gem
- jekyll-feed # Create an Atom feed using the official Jekyll feed gem
- jekyll-relative-links # Used to auto generate md links to html links
- jekyll-optional-front-matter # Parse Markdown files that do not have front-matter callouts
- jekyll-titles-from-headings # pull the page title from the first Markdown heading when none is specified.
- jekyll-paginate # pagination object for collections (e.g. posts)
- jekyll-redirect-from
- jekyll-seo-tag
- jemoji
# Include these subdirectories
include:
- CONTRIBUTING.md
- README.md
# Exclude these files from your production _site
exclude:
- Gemfile
- Gemfile.lock
- README-JEKYLL.md
- LICENSE
- CNAME
- Runbook.docx
- '*.sh'

View File

@ -1,48 +0,0 @@
toc:
- title: Introduction
subfolderitems:
- page: About Ark
url: /index.html
- page: Getting started
url: /quickstart
- page: How Ark works
url: /about
- title: Run Ark
subfolderitems:
- page: Create a backup
url: /run-backup
- page: Restore from backup
url: /restore
- title: Customize Ark
subfolderitems:
- page: Build from source
url: /build-from-scratch
- page: Extend
url: /extend
- page: Extend with plugins
url: /plugins
- page: Extend with hooks
url: /hooks
- title: Reference
subfolderitems:
- page: Backup file format
url: /output-file-format
- page: API types
url: /api-types
- title: Tutorials
subfolderitems:
- page: Disaster Recovery
url: /use-cases
- page: Cluster migration
url: /use-cases.html#cluster-migration
- title: Troubleshooting
subfolderitems:
- page: Troubleshooting
url: /troubleshooting
- page: Troubleshoot an install or setup
url: /debugging-install
- page: Troubleshoot a backup delete
url: /debugging-deletes
- page: Troubleshoot a restore
url: /debugging-restores

View File

@ -1,24 +0,0 @@
- title: Troubleshooting
key: troubleshooting
destination: troubleshooting
- title: Supported Providers
key: supported-providers
destination: supported-providers
- title: ZenHub
key: zenhub
destination: zenhub
- title: Install Overview
key: install-overview
destination: basic-install
- title: Start Contributing
key: start-contributing
destination: start-contributing
- title: Customize Installation
key: customize-installation
destination: customize-installation
- title: Frequently Asked Questions
key: faq
destination: faq
- title: Container Storage Interface Snapshot Support in Velero
key: csi
destination: csi

View File

@ -1,13 +0,0 @@
<div class="row">
{% for post in site.tags[page.tag] %}
{% include blog-post-card.html %}
{% if limit > 0 and forloop.index >= limit %}
{% break %}
{% endif %}
{% assign row = forloop.index | modulo: 3 %}
{% if row == 0 %}
</div>
<div class="row mt-4">
{% endif %}
{% endfor %}
</div>

View File

@ -1,13 +0,0 @@
<div class="row">
{% for post in site.posts %}
{% include blog-post-card.html %}
{% if limit > 0 and forloop.index >= limit %}
{% break %}
{% endif %}
{% assign row = forloop.index | modulo: 3 %}
{% if row == 0 %}
</div>
<div class="row mt-4">
{% endif %}
{% endfor %}
</div>

View File

@ -1,26 +0,0 @@
{{casestudy_background}}
<div class="alternating-cards">
{% for casestudy in site.casestudies %}
<div class="row no-gutters align-items-center">
{% if casestudy.icon %}
<div class="order-xs-first col-md-3 match-height icon bg-color-{{ page.backgrounds.case_study }} {% cycle('order-md-first', 'order-md-last') %}">
<img src="/img/case-study-icons/{{ casestudy.icon }}" alt="{{ casestudy.title }}"/>
</div>
{% endif %}
<div class="order-xs-last col-md-9 {% cycle('order-md-last', 'order-md-first') %}">
<div class="card-body">
{% if casestudy.title != blank %}
<h5 class="card-title">{{ casestudy.title }}</h5>
{% endif %}
<p class="card-text">{{ casestudy.content | markdownify }}</p>
{% for link in casestudy.links %}
<a class="card-link btn btn-primary btn-sm" href="{{ link[1] }}">{{ link[0] }}</a>
{% endfor %}
</div>
</div>
</div>
{% if limit > 0 and forloop.index >= limit %}
{% break %}
{% endif %}
{% endfor %}
</div>

View File

@ -1,21 +0,0 @@
<div class="row">
{% for casestudy in site.casestudies %}
<div class="card card-dark col-md-12 mb-3 mb-sm-0 {% if forloop.index > 1 %}mt-3{% endif %}">
<div class="card-body match-height text-center">
{% if casestudy.title != blank %}
<h5 class="card-title">{{ casestudy.title }}</h5>
{% endif %}
{% if casestudy.subtitle != blank %}
<h6 class="card-subtitle mb-2">{{ casestudy.subtitle }}</h6>
{% endif %}
<p class="card-text">{{ casestudy.content | markdownify }}</p>
{% for link in casestudy.links %}
<a class="card-link btn btn-primary" href="{{ link[1] }}">{{ link[0] }}</a>
{% endfor %}
</div>
</div>
{% if limit > 0 and forloop.index >= limit %}
{% break %}
{% endif %}
{% endfor %}
</div>

View File

@ -1,26 +0,0 @@
<div class="row">
<div class="col">
<h2 class="mb-2">The {{ site.title }} Team</h2>
</div>
</div>
<div class="row">
<div class="col">
<p>{{ site.title }} is released as open source software and provides community support through our GitHub project page.
If you encounter an issue or have a question, feel free to reach out on the <strong><a href="{{ site.gh_repo }}/issues" class="light">GitHub issues page for {{ site.title }}</a></strong>.</p>
<p>The Velero project team welcomes contributions from the community, please see our <strong><a href="https://velero.io/docs/main/start-contributing/" class="light">contributing documentation</a></strong>.
</p>
</div>
</div>
<div class="row thumbnail-grid mt-5">
{% for person in site.contributors %}
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="media thumbnail-item">
<img src="{{ person.image }}" class="rounded-circle" alt="Person" />
<div class="media-body align-self-center">
<h6><a href="https://github.com/{{ person.github_handle }}">{{ person.first_name }} {{ person.last_name }}</a></h6>
{{ person.content | markdownify }}
</div>
</div>
</div>
{% endfor %}
</div>

View File

@ -1,52 +0,0 @@
<div class="section section-background-darkest-blue">
<div class="section-content">
<div class="row">
<div class="col-xs-12 col-sm-6 col-lg-8">
<h5>{{ site.footer.title }}</h5>
<p>{{ site.footer.content }}</p>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 offset-lg-1">
<p><strong>{{ site.footer.cta_title }}</strong></p>
<a href="{{ site.footer.cta_url }}" class="btn btn-sm btn-primary btn-no-border">{{ site.footer.cta_text }}</a>
</div>
</div>
</div>
</div>
<footer class="section site-footer">
<div class="section-content">
<div class="row justify-content-between align-items-center">
<div class="col-12 col-md-8 mb-3 mb-md-0">
<ul class="social-links text-center text-md-left">
{% for link in site.footer_social_links %}
<li>
{% if(link[1].fa_icon != false) %}
<i class="{{ link[1].fa_icon }} fa-lg fa-fw mr-1"></i>
{% endif %}
<a href="{{ link[1].url }}">{{ link[0] }}</a></li>
{% endfor %}
</ul>
</div>
<div class="col-12 col-md-4 text-center text-md-right">
<a href="/" aria-label="Velero homepage"><img src="/img/{{ site.logo }}" class="logo" alt="Homepage"/></a>
</div>
</div>
<div class="row align-items-center">
<div class="col copyright text-center text-md-right mt-4">
&copy; {{ site.time | date: '%Y' }} {{ site.author }}.
<a href="{{ site.footer.vm-link }}" class="vm-logo">A VMware-backed project. <img src="/img/{{ site.vm_logo }}" alt="VMware logo"/></a>
</div>
</div>
</div>
</footer>
<!-- JS -->
<script defer src="https://use.fontawesome.com/releases/v5.8.1/js/all.js" integrity="sha384-g5uSoOSBd7KkhAMlnQILrecXvzst9TdC09/VM+pjDTCM+1il8RHz5fKANTFFb+gQ" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" crossorigin="anonymous"></script>
<script src="/js/jquery.matchHeight.js?{{site.time | date: '%s%N'}}"></script>
<script src="/js/scripts.js?{{site.time | date: '%s%N'}}"></script>

View File

@ -1,9 +0,0 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/css/styles.css?{{site.time | date: '%s%N'}}">
{% seo %}
</head>

View File

@ -1,10 +0,0 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/css/styles.css?{{site.time | date: '%s%N'}}">
<title>{{ site.title }} {{page.title}}</title>
{% seo %}
</head>

View File

@ -1,24 +0,0 @@
<nav class="navigation">
<!-- If new pages are added to the site and the TOC needs to be updated, it
can be overridden, using toc-mapping.yml -->
{% assign tocTemplateName = site.data.toc-mapping[page.version] %}
{% if tocTemplateName == null %}
{% assign tocTemplateName = 'default' %}
{% endif %}
{% assign toc = site.data[tocTemplateName].toc %}
{% for item in toc %}
<h3>{{ item.title }}</h3>
<ul>
{% for entry in item.subfolderitems %}
<li>
{% if entry.github %}
<a href="{{ entry.url | prepend: page.gh }}" target="_blank">{{ entry.page }}</a>
{% else %}
<a href="{{ entry.url | prepend: page.version | prepend: "/docs/" | relative_url }}">{{ entry.page }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
{% endfor %}
</nav>

View File

@ -1,81 +0,0 @@
<div class="section section-card section-card-offset-top promo-cards">
<div class="section-content">
<div class="row">
{% for plugin in site.plugin-list %}
<div class="col-md">
<div class="card card-light mb-3 mb-md-0 shadow-sm">
<div class="card-body match-height">
{% if plugin.supported-by-velero-team == "true" %}
{% if plugin.link.size > 0 %}
<h5><a href="{{ plugin.link }}" class="dark">{{ plugin.title }}</a></h5>
{% else %}
<h5>{{ plugin.title }}</h5>
{% endif %}
<p>{{ plugin.content }}</p>
{% if plugin.object-storage %}
<img src="https://img.shields.io/badge/Object Storage-supported-green">
{% endif %}
{% if plugin.volumesnapshotter %}
<img src="https://img.shields.io/badge/VolumeSnapshotter-supported-green">
{% endif %}
{% if plugin.local-storage %}
<img src="https://img.shields.io/badge/Local Storage-supported-green">
{% endif %}
{% if plugin.supported-by-velero-team %}
<img src="https://img.shields.io/badge/Supported%20By-Velero%20team-blue">
{% endif %}
{% if plugin.BackupItemAction %}
<img src="https://img.shields.io/badge/BackupItemAction-supported-green">
{% endif %}
{% if plugin.RestoreItemAction %}
<img src="https://img.shields.io/badge/RestoreItemAction-supported-green">
{% endif %}
{% endif %}
</div>
</div>
<div class="card card-light mb-3 mb-md-0 shadow-sm">
<div class="card-body match-height">
{% if plugin.supported-by-velero-team != "true" && plugin.prototype != "true" %}
{% if plugin.link.size > 0 %}
<h5><a href="{{ plugin.link }}" class="dark">{{ plugin.title }}</a></h5>
{% else %}
<h5>{{ plugin.title }}</h5>
{% endif %}
<p>{{ plugin.content }}</p>
{% if plugin.object-storage %}
<img src="https://img.shields.io/badge/Object Storage-supported-green">
{% endif %}
{% if plugin.volumesnapshotter %}
<img src="https://img.shields.io/badge/VolumeSnapshotter-supported-green">
{% endif %}
{% if plugin.local-storage %}
<img src="https://img.shields.io/badge/Local Storage-supported-green">
{% endif %}
{% if plugin.supported-by-velero-team %}
<img src="https://img.shields.io/badge/Supported%20By-Velero%20team-blue">
{% endif %}
{% if plugin.BackupItemAction %}
<img src="https://img.shields.io/badge/BackupItemAction-supported-green">
{% endif %}
{% if plugin.RestoreItemAction %}
<img src="https://img.shields.io/badge/RestoreItemAction-supported-green">
{% endif %}
{% if plugin.beta %}
<img src="https://img.shields.io/badge/Beta-true-yellow">
{% endif %}
{% endif %}
</div>
</div>
</div>
{% if limit > 0 and forloop.index >= limit %}
{% break %}
{% endif %}
{% assign row = forloop.index | modulo: 3 %}
{% if row == 0 %}
</div>
<div class="row mt-4">
{% endif %}
{% endfor %}
</div>
</div>
</div>

View File

@ -1,10 +0,0 @@
<h5 class="font-color-darker">Related Content</h5>
<div class="row">
{% for category in site.categories limit:1 %}
{% for post in category[1] limit:2 %}
{% include blog-post-card.html %}
{% endfor %}
{% endfor %}
</div>

View File

@ -1,26 +0,0 @@
{% if page.version != site.latest %}
<div class="alert alert-primary" role="alert">
{% if page.version == 'main' %}
<p>
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
This is the documentation for the latest development version of Velero. Both code and docs may be
unstable, and these docs are not guaranteed to be up to date or correct. See the
<a href="{{latest_url}}">latest version</a>.
</p>
{% elsif page.version contains 'beta' or page.version contains 'alpha' or page.version contains 'rc' or page.version contains 'pre' %}
<p>
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
This is the documentation for the latest pre-production version of Velero. Both code and docs may be
unstable, and these docs only a best-guess effort at being up to date or correct. See the
<a href="{{latest_url}}">latest version</a>.
</p>
{% else %}
<p>
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
Documentation for version {{ page.version }} is no longer actively maintained.
The version you are currently viewing is a static snapshot.
For up-to-date documentation, see the <a href="{{latest_url}}">latest version</a>.
</p>
{% endif %}
</div>
{% endif %}

View File

@ -1,21 +0,0 @@
<div class="row">
<div class="dropdown mb-2">
{% if site.versioning %}
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ page.version }}
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
{% assign original_version = page.version | prepend: '/' | append: '/' %}
{% assign latest_url = page.url | replace: page.version, site.latest | relative_url %}
{% for version in site.versions %}
{% assign new_version = version | prepend: '/' | append: '/' %}
<a class="dropdown-item" href="{{ page.url | replace: original_version, new_version | relative_url }}">{{ version }}</a>
{% endfor %}
</div>
{% else %}
<span>{{ site.latest }}</span>
{% endif %}
</div>
</div>

View File

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body id="{{ page.id }}">
<div class="container-fluid site-outer-container">
<div class="site-container">
{% include site-header.html %}
{{ content }}
{% include footer.html %}
</div>
</div>
</body>
</html>

View File

@ -1,62 +0,0 @@
<!DOCTYPE html>
<html lang="en">
{% include head-docs.html %}
{% if page.version != "main" %}
<!-- Block google from indexing versioned docs -->
<meta name="robots" content="noindex">
{% endif %}
{% if page.name != "README.md" %}
<title>{{ site.title }} Docs - {{page.title}}</title>
{% endif %}
{% if page.name == "README.md" %}
<title>{{ site.title }} Docs - Overview</title>
{% endif %}
<body id="docs">
<div class="container-fluid site-outer-container">
<div class="site-container">
{% include site-header.html %}
<div class="post-single-hero post-single-hero-short bg-color-{{ site.hero.background-color }}">
<div class="section">
<div class="section-content">
<h1>Documentation</h1>
</div>
</div>
</div>
<div class="section section-card pt-4 pb-0">
<div class="container container-max">
<div class="row">
<div class="col-md-3 toc">
{% include versions.html %}
<br />
<form class="d-flex align-items-center">
<span class="algolia-autocomplete" style="position: relative; display: inline-block; direction: ltr;">
<input type="search" class="form-control docsearch-input" id="search-input" placeholder="Search..." aria-label="Search for..." autocomplete="off" spellcheck="false" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-owns="algolia-autocomplete-listbox-0" dir="auto" style="position: relative; vertical-align: top;">
</span>
</form>
{% include nav.html %}
</div>
<div class="col-md-8">
{% include version-warning.html %}
<div class="documentation-container">
{{ content }}
</div>
</div>
</div>
</div>
</div>
{% include footer.html %}
</div>
</div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script type="text/javascript"> docsearch({
apiKey: '3d80f66bb5ecf85f8e2760caef383f24',
indexName: 'velero',
inputSelector: '.docsearch-input',
algoliaOptions: { 'facetFilters': ["version:{{ page.version }}"] },
debug: false // Set debug to true if you want to inspect the dropdown
});
</script>
</body>
</html>

View File

@ -1,28 +0,0 @@
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body id="{{ page.id }}">
<div class="container-fluid site-outer-container">
<div class="site-container">
{% include site-header.html %}
<div class="post-single-hero bg-color-{{ site.hero.background-color }}">
<div class="section">
<div class="section-content">
<h1>{{ page.title }}</h1>
</div>
</div>
</div>
<div class="post-single-body">
<div class="section section-card">
<div class="section-content pt-4 pb-0">
{{ content }}
</div>
</div>
</div>
{% include footer.html %}
</div>
</div>
</body>
</html>

View File

@ -1,55 +0,0 @@
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body id="blog">
<div class="container-fluid site-outer-container">
<div class="site-container">
{% include site-header.html %}
<div class="post-single-hero bg-color-{{ site.hero.background-color }}">
<div class="section">
<div class="section-content">
<h1>{{ page.title }}</h1>
</div>
</div>
</div>
<div class="post-single-body">
<div class="section section-card">
<div class="section-content pt-4 pb-0">
<div class="post-single-meta">
<div class="post-single-meta-author">
{% if page.author_avatar %}
<div class="post-single-meta-author-avatar">
<img src="{{ page.author_avatar }}" alt="{{ page.author_name }}">
</div>
{% endif %}
<div class="post-single-meta-author-name">
<a href="/tags/{{ page.author_name | urlencode }}">{{ page.author_name }}</a>
</div>
</div>
<div class="post-single-meta-date">
{{ page.date | date: "%B %d, %Y" }}
</div>
</div>
<div class="post-single-content">
{{ content }}
</div>
</div>
</div>
</div>
<div class="section pt-3">
<div class="section-content section-content-thin">
{% include related-posts.html %}
</div>
</div>
{% include footer.html %}
</div>
</div>
</body>
</html>

View File

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% if page.dir contains "/docs/" %}
<meta http-equiv="refresh" content="0; url=/docs/{{ site.latest }}/{{ page.destination }}" />
<script type="text/javascript">
window.location.href = "/docs/{{ site.latest }}/{{ page.destination }}"
</script>
<title>Redirecting to docs...</title>
</head>
<body>
Redirecting to {{ page.destination }}. If it doesn't load, click <a href="/docs/{{ site.latest }}/{{ page.destination }}" />here</a>.
</body>
</html>
{% endif %}

View File

@ -1,20 +0,0 @@
---
layout: default
type: standard
caption: 'Tag Index'
id: blog
---
<div class="post-single-hero bg-color-{{ site.hero.background-color }}">
<div class="section">
<div class="section-content">
<h1>{{ page.title }}</h1>
</div>
</div>
</div>
<div class="post-single-body">
<div class="section section-card">
<div class="section-content pt-4 pb-0">
{% include blog-posts-tag.html %}
</div>
</div>
</div>

View File

@ -1,135 +0,0 @@
# coding: utf-8
# Generate pages from individual records in yml files
# (c) 2014-2016 Adolfo Villafiorita
# Distributed under the conditions of the MIT License
module Jekyll
module Sanitizer
# strip characters and whitespace to create valid filenames, also lowercase
def sanitize_filename(name)
if(name.is_a? Integer)
return name.to_s
end
return name.tr(
"ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÑñÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž",
"AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz"
).downcase.strip.gsub(' ', '-').gsub(/[^\w.-]/, '')
end
end
# this class is used to tell Jekyll to generate a page
class DataPage < Page
include Sanitizer
# - site and base are copied from other plugins: to be honest, I am not sure what they do
#
# - `index_files` specifies if we want to generate named folders (true) or not (false)
# - `dir` is the default output directory
# - `data` is the data defined in `_data.yml` of the record for which we are generating a page
# - `name` is the key in `data` which determines the output filename
# - `template` is the name of the template for generating the page
# - `extension` is the extension for the generated file
def initialize(site, base, index_files, dir, data, name, template, extension)
@site = site
@base = base
# @dir is the directory where we want to output the page
# @name is the name of the page to generate
#
# the value of these variables changes according to whether we
# want to generate named folders or not
if data[name] == nil
puts "error (datapage_gen). empty value for field '#{name}' in record #{data}"
else
filename = sanitize_filename(data[name]).to_s
@dir = dir + (index_files ? "/" + filename + "/" : "")
@name = (index_files ? "index" : filename) + "." + extension.to_s
self.process(@name)
self.read_yaml(File.join(base, '_layouts'), template + ".html")
self.data['title'] = data[name]
# add all the information defined in _data for the current record to the
# current page (so that we can access it with liquid tags)
self.data.merge!(data)
end
end
end
class DataPagesGenerator < Generator
safe true
# generate loops over _config.yml/page_gen invoking the DataPage
# constructor for each record for which we want to generate a page
def generate(site)
# page_gen_dirs determines whether we want to generate index pages
# (name/index.html) or standard files (name.html). This information
# is passed to the DataPage constructor, which sets the @dir variable
# as required by this directive
index_files = site.config['page_gen-dirs'] == true
# data contains the specification of the data for which we want to generate
# the pages (look at the README file for its specification)
data = site.config['page_gen']
if data
data.each do |data_spec|
index_files_for_this_data = data_spec['index_files'] != nil ? data_spec['index_files'] : index_files
template = data_spec['template'] || data_spec['data']
name = data_spec['name']
dir = data_spec['dir'] || data_spec['data']
extension = data_spec['extension'] || "html"
if site.layouts.key? template
# records is the list of records defined in _data.yml
# for which we want to generate different pages
records = nil
data_spec['data'].split('.').each do |level|
if records.nil?
records = site.data[level]
else
records = records[level]
end
end
# apply filtering conditions:
# - filter requires the name of a boolean field
# - filter_condition evals a ruby expression
records = records.select { |r| r[data_spec['filter']] } if data_spec['filter']
records = records.select { |record| eval(data_spec['filter_condition']) } if data_spec['filter_condition']
records.each do |record|
site.pages << DataPage.new(site, site.source, index_files_for_this_data, dir, record, name, template, extension)
end
else
puts "error (datapage_gen). could not find template #{template}" if not site.layouts.key? template
end
end
end
end
end
module DataPageLinkGenerator
include Sanitizer
# use it like this: {{input | datapage_url: dir}}
# to generate a link to a data_page.
#
# the filter is smart enough to generate different link styles
# according to the data_page-dirs directive ...
#
# ... however, the filter is not smart enough to support different
# extensions for filenames.
#
# Thus, if you use the `extension` feature of this plugin, you
# need to generate the links by hand
def datapage_url(input, dir)
extension = Jekyll.configuration({})['page_gen-dirs'] ? '/' : '.html'
"#{dir}/#{sanitize_filename(input)}#{extension}"
end
end
end
Liquid::Template.register_filter(Jekyll::DataPageLinkGenerator)

View File

@ -1,32 +0,0 @@
module Jekyll
class TagPage < Page
def initialize(site, base, dir, tag)
@site = site
@base = base
@dir = dir
@name = 'index.html'
self.process(@name)
self.read_yaml(File.join(base, '_layouts'), 'tag-index.html')
self.data['tag'] = tag
tag_title_prefix = site.config['tag_title_prefix'] || 'Posts by '
self.data['title'] = "#{tag_title_prefix}#{tag}"
end
end
class TagPageGenerator < Generator
safe true
def generate(site)
if site.layouts.key? 'tag-index'
dir = site.config['tag_dir'] || 'tags'
site.tags.keys.each do |tag|
site.pages << TagPage.new(site, site.source, File.join(dir, tag), tag)
end
end
end
end
end

View File

@ -1,123 +0,0 @@
# Title: YouTube plugin for Jekyll
# Description: Liquid tag to generate a YouTube embed.
# Authors:
# - Joey Hoer (@joeyhoer | https://joeyhoer.com)
#
# Link: https://developers.google.com/youtube/player_parameters#Parameters
#
# Syntax: {% youtube [video_id] [width] [height] [query_param:value]... %}
#
# Examples:
# {% youtube dQw4w9WgXcQ %}
# {% youtube dQw4w9WgXcQ 600 rel:0 modestbranding:1 %}
#
module Jekyll
class YouTube < Liquid::Tag
## Constants
@@ATTRIBUTES = %w(
autoplay
cc_load_policy
color
controls
disablekb
enablejsapi
end
fs
hl
iv_load_policy
list
listType
loop
modestbranding
origin
playlist
playsinline
rel
showinfo
start
widget_referrer
)
@ytid = nil
@width = ''
@height = ''
def initialize(tag_name, markup, tokens)
@content=markup
@config = {}
# Override configuration with values defined within _config.yml
if Jekyll.configuration({}).has_key?('youtube')
config = Jekyll.configuration({})['youtube']
override_config(config)
end
params = markup.split
if params.shift =~ /(?:(?:https?:\/\/)?(?:www.)?(?:youtube.com\/(?:embed\/|watch\?v=)|youtu.be\/)?(\S+)(?:\?rel=\d)?)/i
@video_id = $1
end
@width = (params[0].to_i > 0) ? params.shift.to_i : 560
@height = (params[0].to_i > 0) ? params.shift.to_i : (@width / 16.0 * 9).ceil
if params.size > 0
# Override configuration with parameters defined within Liquid tag
config = {} # Reset local config
params.each do |param|
param = param.gsub /\s+/, '' # Remove whitespaces
key, value = param.split(':',2) # Split first occurrence of ':' only
config["#{key}"] = value
end
override_config(config)
end
super
end
def override_config(config)
config.each{ |key,value| @config[key] = value }
end
def render(context)
ouptut = super
if !@video_id
@video_id = "#{context[@content.strip]}"
end
if @video_id
template_path = File.join(Dir.pwd, "_includes", "youtube.html")
if File.exist?(template_path)
site = context.registers[:site]
partial = File.read(template_path)
template = Liquid::Template.parse(partial)
template.render!(({"video_id" => @video_id, "width" => @width, "height" => @height, "query_string" => render_query_string()}).merge(site.site_payload))
else
"<iframe width=\"#{@width}\" height=\"#{@height}\" src=\"https://www.youtube.com/embed/#{@video_id}#{render_query_string()}\" frameborder=\"0\" allowfullscreen></iframe>"
end
else
puts "YouTube Embed: Error processing input, expected syntax {% youtube video_id [width] [height] [data-attr:value] %}"
end
end
def render_query_string
result = []
@config.each do |key,value|
if @@ATTRIBUTES.include?(key.to_s)
result << "#{key}=#{value}"
end
end
return (!(result.empty?) ? '?' : '') + result.join('&')
end
end
end
Liquid::Template.register_tag('youtube', Jekyll::YouTube)

Some files were not shown because too many files have changed in this diff Show More