#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
REPOSITORY_ROOT=$(realpath $(dirname ${BASH_SOURCE})/..)
CRD_OPTS=crd:allowDangerousTypes=true
APIS_PATH=${REPOSITORY_ROOT}/pkg/apis
OUTPUT=${REPOSITORY_ROOT}/deploy/container-checkpoint-v1-crd-gen.yaml
WORKSPACE=$(mktemp -d)
echo "WORKSPACE=${WORKSPACE}"
function cleanup() {
rm -r ${WORKSPACE}
}
trap cleanup EXIT
if [[ -z $(which controller-gen) ]]; then
(
cd $WORKSPACE
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.9.2
)
CONTROLLER_GEN=${GOBIN:-$(go env GOPATH)/bin}/controller-gen
else
CONTROLLER_GEN=$(which controller-gen)
fi
CONTROLLER_GEN=../bin/controller-gen
echo "CONTROLLER_GEN=${CONTROLLER_GEN}"
${CONTROLLER_GEN} ${CRD_OPTS} paths="${APIS_PATH}/..." output:crd:dir="\"${WORKSPACE}\"" >& ${WORKSPACE}/errors.log ||:
grep -v -e 'map keys must be strings, not int' -e 'not all generators ran successfully' -e 'usage' ${WORKSPACE}/errors.log \
&& { echo "Failed to generate CRD YAMLs."; exit 1; }
cd ${WORKSPACE}
cat <<EOF > kustomization.yaml
resources:
- containercheckpoints.yaml
commonAnnotations:
"api-approved.kubernetes.io": "https://github.com/kubernetes/kubernetes/pull/63797"
EOF
echo --- > ${OUTPUT}
kubectl kustomize . >> ${OUTPUT}