refactor: add helper functions to reduce code duplication (#76)
All checks were successful
ci/woodpecker/push/build-package Pipeline was successful
ci/woodpecker/push/notify Pipeline was successful

Reviewed-on: #76
Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
Co-committed-by: Robert Kaussow <mail@thegeeklab.de>
This commit is contained in:
Robert Kaussow 2024-03-26 13:18:00 +01:00 committed by Robert Kaussow
parent 592642167d
commit 543151ff52

View File

@ -2,6 +2,22 @@
set -eo pipefail set -eo pipefail
shopt -s globstar shopt -s globstar
prepare() {
mkdir -p "${WORKDIR}"
curl -SsfL -o "${WORKDIR}/${NAME}.crds.yaml" "${SOURCE}"
}
output() {
TARGET_DIR="$DIST/$API"
mkdir -p "$TARGET_DIR"
for FILE in "${WORKDIR}"/*.json; do
FILENAME=$(basename "$FILE")
mv "$FILE" "$TARGET_DIR/$FILENAME"
done
}
generate_all() { generate_all() {
export SOURCE=$1 export SOURCE=$1
@ -14,36 +30,21 @@ generate_all() {
default_openapi_handler() { default_openapi_handler() {
printf "Processing %s ...\n" $API printf "Processing %s ...\n" $API
mkdir -p "${WORKDIR}" prepare
curl -SsfL -o "${WORKDIR}/${NAME}.crds.yaml" "${SOURCE}"
( (
cd "$WORKDIR" cd "$WORKDIR"
openapi2jsonschema "${NAME}.crds.yaml" >/dev/null openapi2jsonschema "${NAME}.crds.yaml" >/dev/null
) )
output
TARGET_DIR="$DIST/$API"
mkdir -p "$TARGET_DIR"
for FILE in "${WORKDIR}"/*.json; do
FILENAME=$(basename "$FILE")
mv "$FILE" "$TARGET_DIR/$FILENAME"
done
generate_all "$TARGET_DIR" generate_all "$TARGET_DIR"
} }
## Calico calico_handler() {
API=projectcalico.org
WORKDIR="${TMP_CRD_DIR}/calico"
SOURCE="https://raw.githubusercontent.com/projectcalico/calico/${CALICO_VERSION}/manifests/calico.yaml"
printf "Processing %s ...\n" $API printf "Processing %s ...\n" $API
mkdir -p "${WORKDIR}" prepare
curl -SsfL -o "${WORKDIR}/calico.crds.yaml" "${SOURCE}"
( (
cd "$WORKDIR" cd "$WORKDIR"
openapi2jsonschema "calico.crds.yaml" >/dev/null openapi2jsonschema "${NAME}.crds.yaml" >/dev/null
) )
TARGET_DIR="$DIST/$API" TARGET_DIR="$DIST/$API"
@ -56,12 +57,9 @@ for FILE in "${WORKDIR}"/*.json; do
done done
generate_all "$TARGET_DIR" generate_all "$TARGET_DIR"
}
## Flux2 flux_handler() {
API=toolkit.fluxcd.io
WORKDIR="${TMP_CRD_DIR}/flux"
SOURCE="https://github.com/fluxcd/flux2/releases/download/${FLUXCD_VERSION}/crd-schemas.tar.gz"
printf "Processing %s ...\n" $API printf "Processing %s ...\n" $API
mkdir -p "${WORKDIR}" mkdir -p "${WORKDIR}"
curl -SsfL "${SOURCE}" | tar xz -C "${WORKDIR}" curl -SsfL "${SOURCE}" | tar xz -C "${WORKDIR}"
@ -81,32 +79,39 @@ for FILE in "${WORKDIR}"/*.json; do
generate_all "$TARGET_DIR" generate_all "$TARGET_DIR"
done done
}
metallb_handler() {
printf "Processing %s ...\n" $API
prepare
(
cd "$WORKDIR"
yq --inplace 'del(.spec.conversion)' "${NAME}.crds.yaml"
openapi2jsonschema "${NAME}.crds.yaml" >/dev/null
)
output
generate_all "$TARGET_DIR"
}
## Calico
API=projectcalico.org
NAME=calico
WORKDIR="${TMP_CRD_DIR}/calico"
SOURCE="https://raw.githubusercontent.com/projectcalico/calico/${CALICO_VERSION}/manifests/calico.yaml"
calico_handler
## Flux2
API=toolkit.fluxcd.io
WORKDIR="${TMP_CRD_DIR}/flux"
SOURCE="https://github.com/fluxcd/flux2/releases/download/${FLUXCD_VERSION}/crd-schemas.tar.gz"
flux_handler
## Metallb ## Metallb
API=metallb.io API=metallb.io
NAME=metallb NAME=metallb
WORKDIR="${TMP_CRD_DIR}/$NAME" WORKDIR="${TMP_CRD_DIR}/$NAME"
SOURCE="https://raw.githubusercontent.com/metallb/metallb/${METALLB_VERSION}/charts/metallb/charts/crds/templates/crds.yaml" SOURCE="https://raw.githubusercontent.com/metallb/metallb/${METALLB_VERSION}/charts/metallb/charts/crds/templates/crds.yaml"
metallb_handler
printf "Processing %s ...\n" $API
mkdir -p "${WORKDIR}"
curl -SsfL -o "${WORKDIR}/${NAME}.crds.yaml" "${SOURCE}"
(
cd "$WORKDIR"
yq --inplace 'del(.spec.conversion)' "${NAME}.crds.yaml"
openapi2jsonschema "${NAME}.crds.yaml" >/dev/null
)
TARGET_DIR="$DIST/$API"
mkdir -p "$TARGET_DIR"
for FILE in "${WORKDIR}"/*.json; do
FILENAME=$(basename "$FILE")
mv "$FILE" "$TARGET_DIR/$FILENAME"
done
generate_all "$TARGET_DIR"
## Cloudnative-PG ## Cloudnative-PG
API=postgresql.cnpg.io API=postgresql.cnpg.io