mirror of https://github.com/knative/docs.git
170 lines
5.4 KiB
Bash
Executable File
170 lines
5.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# This script is for generating API reference docs for Knative components.
|
|
|
|
# Copyright 2018 Knative authors
|
|
#
|
|
# 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 -euo pipefail
|
|
|
|
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
[[ -n "${DEBUG:-}" ]] && set -x
|
|
|
|
REFDOCS_PKG="github.com/ahmetb/gen-crd-api-reference-docs"
|
|
REFDOCS_REPO="https://${REFDOCS_PKG}.git"
|
|
REFDOCS_VER="v0.3.0"
|
|
|
|
KNATIVE_SERVING_REPO="github.com/knative/serving"
|
|
KNATIVE_SERVING_IMPORT_PATH="knative.dev/serving"
|
|
KNATIVE_SERVING_COMMIT="${KNATIVE_SERVING_COMMIT:?specify the \$KNATIVE_SERVING_COMMIT variable}"
|
|
KNATIVE_SERVING_OUT_FILE="serving.md"
|
|
|
|
KNATIVE_EVENTING_REPO="github.com/knative/eventing"
|
|
KNATIVE_EVENTING_IMPORT_PATH="knative.dev/eventing"
|
|
KNATIVE_EVENTING_COMMIT="${KNATIVE_EVENTING_COMMIT:?specify the \$KNATIVE_EVENTING_COMMIT variable}"
|
|
KNATIVE_EVENTING_OUT_FILE="eventing/eventing.md"
|
|
|
|
cleanup_refdocs_root=
|
|
cleanup_repo_clone_root=
|
|
trap cleanup EXIT
|
|
|
|
log() {
|
|
echo "$@" >&2
|
|
}
|
|
|
|
fail() {
|
|
log "error: $*"
|
|
exit 1
|
|
}
|
|
|
|
install_go_bin() {
|
|
local pkg
|
|
pkg="$1"
|
|
(
|
|
cd "$(mktemp -d)"
|
|
go mod init tmp
|
|
go get -u "$pkg"
|
|
# will be downloaded to "$(go env GOPATH)/bin/$(basename $pkg)"
|
|
)
|
|
}
|
|
|
|
repo_tarball_url() {
|
|
local repo commit
|
|
repo="$1"
|
|
commit="$2"
|
|
echo "https://$repo/archive/$commit.tar.gz"
|
|
}
|
|
|
|
clone_at_commit() {
|
|
local repo commit dest
|
|
repo="$1"
|
|
commit="$2"
|
|
dest="$3"
|
|
mkdir -p "${dest}"
|
|
git clone "${repo}" "${dest}"
|
|
git --git-dir="${dest}/.git" --work-tree="${dest}" checkout --detach --quiet "${commit}"
|
|
}
|
|
|
|
gen_refdocs() {
|
|
local refdocs_bin gopath out_file repo_root api_dir
|
|
refdocs_bin="$1"
|
|
gopath="$2"
|
|
template_dir="$3"
|
|
out_file="$4"
|
|
repo_root="$5"
|
|
api_dir="$6"
|
|
|
|
(
|
|
cd "${repo_root}"
|
|
env GOPATH="${gopath}" "${refdocs_bin}" \
|
|
-out-file "${out_file}" \
|
|
-api-dir "${api_dir}" \
|
|
-template-dir "${template_dir}" \
|
|
-config "${SCRIPTDIR}/reference-docs-gen-config.json"
|
|
)
|
|
}
|
|
|
|
cleanup() {
|
|
if [ -d "${cleanup_refdocs_root}" ]; then
|
|
echo "Cleaning up tmp directory: ${cleanup_refdocs_root}"
|
|
rm -rf -- "${cleanup_refdocs_root}"
|
|
fi
|
|
if [ -d "${cleanup_repo_clone_root}" ]; then
|
|
echo "Cleaning up tmp directory: ${cleanup_repo_clone_root}"
|
|
rm -rf -- "${cleanup_repo_clone_root}"
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
if [[ -n "${GOPATH:-}" ]]; then
|
|
fail "GOPATH should not be set."
|
|
fi
|
|
if ! command -v "go" 1>/dev/null ; then
|
|
fail "\"go\" is not in PATH"
|
|
fi
|
|
if ! command -v "git" 1>/dev/null ; then
|
|
fail "\"git\" is not in PATH"
|
|
fi
|
|
|
|
# install and place the refdocs tool
|
|
local refdocs_bin refdocs_bin_expected refdocs_dir template_dir
|
|
refdocs_dir="$(mktemp -d)"
|
|
cleanup_refdocs_root="${refdocs_dir}"
|
|
# clone repo for ./templates
|
|
git clone --quiet --depth=1 "${REFDOCS_REPO}" "${refdocs_dir}"
|
|
template_dir="${refdocs_dir}/template"
|
|
# install bin
|
|
install_go_bin "${REFDOCS_PKG}@${REFDOCS_VER}"
|
|
# move bin to final location
|
|
refdocs_bin="${refdocs_dir}/refdocs"
|
|
refdocs_bin_expected="$(go env GOPATH)/bin/$(basename ${REFDOCS_PKG})"
|
|
mv "${refdocs_bin_expected}" "${refdocs_bin}"
|
|
[[ ! -f "${refdocs_bin}" ]] && fail "refdocs failed to install"
|
|
|
|
local clone_root out_dir
|
|
clone_root="$(mktemp -d)"
|
|
cleanup_repo_clone_root="${clone_root}"
|
|
out_dir="$(mktemp -d)"
|
|
|
|
local knative_serving_root
|
|
knative_serving_root="${clone_root}/src/${KNATIVE_SERVING_IMPORT_PATH}"
|
|
clone_at_commit "https://${KNATIVE_SERVING_REPO}.git" "${KNATIVE_SERVING_COMMIT}" \
|
|
"${knative_serving_root}"
|
|
gen_refdocs "${refdocs_bin}" "${clone_root}" "${template_dir}" \
|
|
"${out_dir}/${KNATIVE_SERVING_OUT_FILE}" "${knative_serving_root}" "./pkg/apis"
|
|
|
|
cp "${out_dir}/${KNATIVE_SERVING_OUT_FILE}" "$SCRIPTDIR/../docs/reference/api/${KNATIVE_SERVING_OUT_FILE}"
|
|
|
|
local knative_eventing_root
|
|
knative_eventing_root="${clone_root}/src/${KNATIVE_EVENTING_IMPORT_PATH}"
|
|
clone_at_commit "https://${KNATIVE_EVENTING_REPO}.git" "${KNATIVE_EVENTING_COMMIT}" \
|
|
"${knative_eventing_root}"
|
|
gen_refdocs "${refdocs_bin}" "${clone_root}" "${template_dir}" \
|
|
"${out_dir}/${KNATIVE_EVENTING_OUT_FILE}" "${knative_eventing_root}" "./pkg/apis"
|
|
|
|
cp "${out_dir}/${KNATIVE_EVENTING_OUT_FILE}" "$SCRIPTDIR/../docs/reference/api/${KNATIVE_EVENTING_OUT_FILE}"
|
|
|
|
# local knative_eventing_contrib_root
|
|
# knative_eventing_contrib_root="${clone_root}/src/${KNATIVE_EVENTING_CONTRIB_IMPORT_PATH}"
|
|
# clone_at_commit "https://${KNATIVE_EVENTING_CONTRIB_REPO}.git" "${KNATIVE_EVENTING_CONTRIB_COMMIT}" \
|
|
# "${knative_eventing_contrib_root}"
|
|
# gen_refdocs "${refdocs_bin}" "${clone_root}" "${template_dir}" \
|
|
# "${out_dir}/${KNATIVE_EVENTING_CONTRIB_OUT_FILE}" "${knative_eventing_contrib_root}" "."
|
|
|
|
echo "Applying patches..."
|
|
git apply $SCRIPTDIR/patches/*.patch
|
|
}
|
|
|
|
main "$@"
|