Commit 358221f9 authored by Chao Xu's avatar Chao Xu

Don't update api-reference docs if the only changes are the timestamps

parent f64780d6
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
......@@ -7,6 +7,9 @@ RUN wget https://services.gradle.org/distributions/gradle-2.5-bin.zip
RUN mkdir build/
RUN unzip gradle-2.5-bin.zip -d build/
RUN mkdir gradle-cache/
ENV GRADLE_USER_HOME=/gradle-cache
COPY build.gradle build/
COPY gen-swagger-docs.sh build/
......@@ -17,5 +20,7 @@ RUN wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/swag
RUN build/gen-swagger-docs.sh v1 https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes/master/pkg/api/v1/register.go
RUN rm /output/*
RUN rm /swagger-source/*
RUN chmod -R 777 build/
RUN chmod -R 777 gradle-cache/
ENTRYPOINT ["build/gen-swagger-docs.sh"]
......@@ -20,7 +20,7 @@ set -o errexit
set -o nounset
set -o pipefail
cd /build/
cd /build
wget "$2" -O register.go
......
......@@ -22,14 +22,24 @@ set -o nounset
set -o pipefail
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
REPO_DIR=${REPO_DIR:-"${PWD}/${KUBE_ROOT}"}
source "${KUBE_ROOT}/hack/lib/init.sh"
kube::golang::setup_env
kube::util::ensure-temp-dir
#KUBE_ROOT should be an absolute path now that we have run kube::golang::setup_env.
REPO_DIR=${REPO_DIR:-"${KUBE_ROOT}"}
DEFAULT_OUTPUT_PATH="${REPO_DIR}/docs/api-reference"
OUTPUT=${1:-${DEFAULT_OUTPUT_PATH}}
OUTPUT_TEMP="${KUBE_TEMP}/generated_html"
echo "Generating api reference docs at ${OUTPUT}"
V1_PATH="${OUTPUT}/v1/"
V1BETA1_PATH="${OUTPUT}/extensions/v1beta1"
V1_TEMP_PATH="${OUTPUT_TEMP}/v1/"
mkdir -p ${V1_TEMP_PATH}
V1BETA1_PATH="${OUTPUT}/extensions/v1beta1/"
V1BETA1_TEMP_PATH="${OUTPUT_TEMP}/extensions/v1beta1/"
mkdir -p ${V1BETA1_TEMP_PATH}
SWAGGER_PATH="${REPO_DIR}/api/swagger-spec/"
echo "Reading swagger spec from: ${SWAGGER_PATH}"
......@@ -37,12 +47,40 @@ echo "Reading swagger spec from: ${SWAGGER_PATH}"
mkdir -p $V1_PATH
mkdir -p $V1BETA1_PATH
docker run --rm -v $V1_PATH:/output:z -v ${SWAGGER_PATH}:/swagger-source:z gcr.io/google_containers/gen-swagger-docs:v3 \
docker run -u $(id -u) --rm -v $V1_TEMP_PATH:/output:z -v ${SWAGGER_PATH}:/swagger-source:z gcr.io/google_containers/gen-swagger-docs:v4 \
v1 \
https://raw.githubusercontent.com/kubernetes/kubernetes/master/pkg/api/v1/register.go
docker run --rm -v $V1BETA1_PATH:/output:z -v ${SWAGGER_PATH}:/swagger-source:z gcr.io/google_containers/gen-swagger-docs:v3 \
docker run -u $(id -u) --rm -v $V1BETA1_TEMP_PATH:/output:z -v ${SWAGGER_PATH}:/swagger-source:z gcr.io/google_containers/gen-swagger-docs:v4 \
v1beta1 \
https://raw.githubusercontent.com/kubernetes/kubernetes/master/pkg/apis/extensions/v1beta1/register.go
# Check if we actually changed anything
pushd "${OUTPUT_TEMP}" > /dev/null
touch .generated_html
find . -type f | cut -sd / -f 2- | LC_ALL=C sort > .generated_html
popd > /dev/null
while read file; do
if [[ -e "${OUTPUT}/${file}" && -e "${OUTPUT_TEMP}/${file}" ]]; then
echo "comparing ${OUTPUT}/${file} with ${OUTPUT_TEMP}/${file}"
# Filter all munges from original content.
original=$(cat "${OUTPUT}/${file}")
generated=$(cat "${OUTPUT_TEMP}/${file}")
# Filter out meaningless lines with timestamps
original=$(echo "${original}" | grep -v "Last updated" || :)
generated=$(echo "${generated}" | grep -v "Last updated" || :)
# By now, the contents should be normalized and stripped of any
# auto-managed content.
if diff -Bw >/dev/null <(echo "${original}") <(echo "${generated}"); then
# actual contents same, overwrite generated with original.
cp "${OUTPUT}/${file}" "${OUTPUT_TEMP}/${file}"
fi
fi
done <"${OUTPUT_TEMP}/.generated_html"
cp -af "${OUTPUT_TEMP}"/* "${OUTPUT}"
# ex: ts=2 sw=2 et filetype=sh
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment