| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/bin/bash
- set -e
- CRD_DIR=${1:-../loco-operator/config/crd/bases}
- TEMP_DIR=${2:-.tmp}
- sync_crd() {
- file=$1
- group=$2
- kind=$3
- version=$4
- content=$(cat $file)
- name=$(echo "$content" | yq e '.metadata.name' -)
- outjson="${TEMP_DIR}/${group}_${kind}_${version}.json"
- mkdir -p "src/lib/types/$group/$version"
- outts="src/lib/types/${group}/${version}/${kind}.ts"
- echo "$content" | yq eval -o=json "
- {
- \"openapi\": \"3.0.0\",
- \"info\": { \"title\": \"$name\", \"version\": \"$version\" },
- \"paths\": {},
- \"components\": {
- \"schemas\": {
- \"$kind\": (
- .spec.versions[]
- | select(.name == \"$version\")
- | .schema.openAPIV3Schema
- )
- }
- }
- }
- " - > "$outjson"
- npx openapi-typescript "$outjson" -o "$outts"
- }
- if [ ! -d "$TEMP_DIR" ]; then
- mkdir -p "$TEMP_DIR"
- fi
- for file in `ls $CRD_DIR/*.yaml`;
- do
- content=$(cat $file)
- group=$(echo "$content" | yq e '.spec.group' -)
- kind=$(echo "$content" | yq e '.spec.names.kind' -)
- versions=$(echo "$content" | yq e '.spec.versions[].name' -)
- echo "Syncing CRD: $file"
- echo "Group: $group, Kind: $kind"
- for version in $versions
- do
- echo "Version: $version"
- sync_crd $file $group $kind $version
- echo "-----------------------------"
- done
- done
|