From 718a563b1feae3616041c7677665b7e3ceaa3a0a Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Wed, 14 Jan 2015 21:27:13 -0800 Subject: [PATCH] Add a gendocs pre-submit hook. --- docs/devel/development.md | 11 +---- hack/run-gendocs.sh | 90 +++++++++++++++++++++++++++++++++++++++ hooks/prepare-commit-msg | 13 ++++++ 3 files changed, 105 insertions(+), 9 deletions(-) create mode 100755 hack/run-gendocs.sh diff --git a/docs/devel/development.md b/docs/devel/development.md index bd18b82852e..0e2f6fbfd1b 100644 --- a/docs/devel/development.md +++ b/docs/devel/development.md @@ -238,16 +238,9 @@ git fetch upstream git rebase upstream/master ``` -## Regenerating the API documentation +## Regenerating the CLI documentation ``` -cd kubernetes/api -sudo docker build -t kubernetes/raml2html . -sudo docker run --name="docgen" kubernetes/raml2html -sudo docker cp docgen:/data/kubernetes.html . +hack/run-gendocs.sh ``` -View the API documentation using htmlpreview (works on your fork, too): -``` -http://htmlpreview.github.io/?https://github.com/GoogleCloudPlatform/kubernetes/blob/master/api/kubernetes.html -``` diff --git a/hack/run-gendocs.sh b/hack/run-gendocs.sh new file mode 100755 index 00000000000..4d0561e53b2 --- /dev/null +++ b/hack/run-gendocs.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +# Copyright 2014 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env +"${KUBE_ROOT}/hack/build-go.sh" cmd/gendocs + +# Get the absolute path of the directory component of a file, i.e. the +# absolute path of the dirname of $1. +get_absolute_dirname() { + echo "$(cd "$(dirname "$1")" && pwd)" +} + +# Detect the OS name/arch so that we can find our binary +case "$(uname -s)" in + Darwin) + host_os=darwin + ;; + Linux) + host_os=linux + ;; + *) + echo "Unsupported host OS. Must be Linux or Mac OS X." >&2 + exit 1 + ;; +esac + +case "$(uname -m)" in + x86_64*) + host_arch=amd64 + ;; + i?86_64*) + host_arch=amd64 + ;; + amd64*) + host_arch=amd64 + ;; + arm*) + host_arch=arm + ;; + i?86*) + host_arch=x86 + ;; + *) + echo "Unsupported host arch. Must be x86_64, 386 or arm." >&2 + exit 1 + ;; +esac + +# Find binary +locations=( + "${KUBE_ROOT}/_output/dockerized/bin/${host_os}/${host_arch}/gendocs" + "${KUBE_ROOT}/_output/local/bin/${host_os}/${host_arch}/gendocs" + "${KUBE_ROOT}/platforms/${host_os}/${host_arch}/gendocs" +) +gendocs=$( (ls -t "${locations[@]}" 2>/dev/null || true) | head -1 ) + +if [[ ! -x "$gendocs" ]]; then + { + echo "It looks as if you don't have a compiled gendocs binary" + echo + echo "If you are running from a clone of the git repo, please run" + echo "'./hack/build-go.sh cmd/gendocs'." + } >&2 + exit 1 +fi + + +KUBECTL_DOC="docs/kubectl.md" +${gendocs} > ${KUBECTL_DOC} + diff --git a/hooks/prepare-commit-msg b/hooks/prepare-commit-msg index 270fcd85852..76e4057547c 100755 --- a/hooks/prepare-commit-msg +++ b/hooks/prepare-commit-msg @@ -80,3 +80,16 @@ if [[ "${#files_need_description[@]}" -ne 0 ]]; then echo ) >> $1 fi + +if ! hack/verify-gendocs.sh > /dev/null; then + ( + echo + echo "# *** ERROR: *** docs are out of sync between cli and markdown" + echo "# run hack/gendocs.sh > docs/kubectl.md to regenerate" + echo + echo "#" + echo "# Your commit will be aborted unless you regenerate docs." + echo " COMMIT_BLOCKED_ON_GENDOCS" + echo + ) >> $1 +fi