-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgen.sh
executable file
·66 lines (60 loc) · 2.6 KB
/
gen.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env bash
# $1: <repository>, example: "pulumi/crd2pulumi"
github_repo_latest_tag() {
local repo=$1
local auth_header=""
# Try to get GitHub token from gh CLI if it's available
if command -v gh &>/dev/null; then
local token=$(gh auth token 2>/dev/null)
if [ -n "$token" ]; then
auth_header="Authorization: Bearer ${token}"
fi
fi
local response=$(curl -s -L \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
${auth_header:+-H "$auth_header"} \
"https://api.github.com/repos/${repo}/tags" \
)
local latest_tag=$(echo "$response" | jq -r '.[0].name // empty')
echo "$latest_tag"
}
if ! command -v crd2pulumi > /dev/null; then
if [ "$1" = "setup" ]; then
version="$(github_repo_latest_tag "pulumi/crd2pulumi")"
curl -sSL "https://github.com/pulumi/crd2pulumi/releases/download/${version}/crd2pulumi-${version}-linux-amd64.tar.gz" -o crd2pulumi.tar.gz
tar -xf crd2pulumi.tar.gz
mv crd2pulumi ~/.local/bin
rm crd2pulumi.tar.gz
else
echo "crd2pulumi is required, you can let this script install it for you:\n$0 setup"
exit 1
fi
fi
pnpm i
rm -rf tmp gen
mkdir -p tmp gen
# $1: github "org/repo"
# $2: crd files glob
# $3: js package name
function gen() {
local repo="$1"
local glob="$2"
local packname="$3"
local tag="$(github_repo_latest_tag "$repo")"
echo "$repo: $tag"
git clone --depth 1 --branch "$tag" "https://github.com/$repo.git" "tmp/$packname"
crd2pulumi -v "$tag" --nodejsName "$packname" --nodejsPath "gen/$packname" $(echo "tmp/$packname/$glob")
# pre-compile the package: allows removing the postinstall script
./node_modules/typescript/bin/tsc -p "./gen/$packname"
jq 'del(.scripts.postinstall)' "./gen/$packname/package.json" > temp.json && mv temp.json "./gen/$packname/package.json"
rm "./gen/$packname/scripts/postinstall.js"
cp "./gen/$packname/package.json" "./gen/$packname/bin/package.json"
}
gen "cloudnative-pg/cloudnative-pg" "config/crd/bases/*.yaml" "cloudnative-pg"
gen "rabbitmq/cluster-operator" "config/crd/bases/*.yaml" "rabbitmq-cluster-operator"
gen "rabbitmq/messaging-topology-operator" "config/crd/bases/*.yaml" "rabbitmq-topology-operator"
gen "cert-manager/cert-manager" "deploy/crds/*.yaml" "certmanager"
gen "prometheus-operator/prometheus-operator" "example/prometheus-operator-crd/*.yaml" "prometheus-operator"
gen "authzed/spicedb-operator" "config/crds/*.yaml" "spicedb-operator"
gen "aws/karpenter-provider-aws" "pkg/apis/crds/*.yaml" "karpenter-aws"