mirror of https://github.com/linkerd/linkerd2.git
66 lines
2.5 KiB
Bash
Executable File
66 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
|
SCRIPT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
GEN_VER=$( awk '/k8s.io\/code-generator/ { print $2 }' "${SCRIPT_ROOT}/go.mod" )
|
|
KUBE_OPEN_API_VER=$( awk '/k8s.io\/kube-openapi/ { print $2 }' "${SCRIPT_ROOT}/go.mod" )
|
|
CODEGEN_PKG=$(mktemp -d -t "code-generator-${GEN_VER}.XXX")/code-generator
|
|
|
|
git clone --depth 1 --branch "$GEN_VER" https://github.com/kubernetes/code-generator "$CODEGEN_PKG"
|
|
(
|
|
cd "$CODEGEN_PKG"
|
|
go get k8s.io/kube-openapi/pkg/common@"$KUBE_OPEN_API_VER"
|
|
)
|
|
|
|
# Remove previously generated code
|
|
rm -rf "${SCRIPT_ROOT}/controller/gen/client/clientset/*"
|
|
rm -rf "${SCRIPT_ROOT}/controller/gen/client/listeners/*"
|
|
rm -rf "${SCRIPT_ROOT}/controller/gen/client/informers/*"
|
|
crds=(serviceprofile:v1alpha2 server:v1beta1 serverauthorization:v1beta1 link:v1alpha1 policy:v1alpha1 policy:v1beta3 externalworkload:v1beta1)
|
|
for crd in "${crds[@]}"
|
|
do
|
|
crd_path=$(tr : / <<< "$crd")
|
|
rm -f "${SCRIPT_ROOT}/controller/gen/apis/${crd_path}/zz_generated.deepcopy.go"
|
|
done
|
|
|
|
# shellcheck disable=SC1091
|
|
source "${CODEGEN_PKG}/kube_codegen.sh"
|
|
|
|
# Create a symlink so that the root of the repo is inside github.com/linkerd/linkerd2.
|
|
# This is required because the codegen scripts expect it.
|
|
mkdir -p "${SCRIPT_ROOT}/github.com/linkerd"
|
|
ln -s "$(realpath "${SCRIPT_ROOT}")" "${SCRIPT_ROOT}/github.com/linkerd/linkerd2"
|
|
|
|
kube::codegen::gen_helpers \
|
|
--boilerplate "${SCRIPT_ROOT}/controller/gen/boilerplate.go.txt" \
|
|
github.com/linkerd/linkerd2/controller/gen/apis
|
|
|
|
if [[ -n "${API_KNOWN_VIOLATIONS_DIR:-}" ]]; then
|
|
report_filename="${API_KNOWN_VIOLATIONS_DIR}/codegen_violation_exceptions.list"
|
|
if [[ "${UPDATE_API_KNOWN_VIOLATIONS:-}" == "true" ]]; then
|
|
update_report="--update-report"
|
|
fi
|
|
fi
|
|
|
|
kube::codegen::gen_openapi \
|
|
--output-pkg github.com/linkerd/linkerd2/controller/gen \
|
|
--output-dir "${SCRIPT_ROOT}/controller/gen/client" \
|
|
--report-filename "${report_filename:-"/dev/null"}" \
|
|
${update_report:+"${update_report}"} \
|
|
--boilerplate "${SCRIPT_ROOT}/controller/gen/boilerplate.go.txt" \
|
|
github.com/linkerd/linkerd2/controller/gen/apis
|
|
|
|
kube::codegen::gen_client \
|
|
--with-watch \
|
|
--output-pkg github.com/linkerd/linkerd2/controller/gen/client \
|
|
--output-dir "${SCRIPT_ROOT}/controller/gen/client" \
|
|
--boilerplate "${SCRIPT_ROOT}/controller/gen/boilerplate.go.txt" \
|
|
github.com/linkerd/linkerd2/controller/gen/apis
|
|
|
|
# Once the code has been generated, we can remove the symlink.
|
|
rm -rf "${SCRIPT_ROOT}/github.com"
|