@@ -31,6 +31,17 @@ function scaffold_test_project {
3131 rm -rf $testdata_dir /$project /*
3232 pushd $testdata_dir /$project
3333
34+ # TODO: Remove it when we have the hub and spoke scaffolded by Kubebuilder
35+ # Define the sed command based on the OS
36+ if [[ " $OSTYPE " == " darwin" * ]]; then
37+ # macOS sed syntax
38+ sed_storage_version=" sed -i '' '43i \
39+ // +kubebuilder:storageversion\'$'\n''// +kubebuilder:conversion:hub'"
40+ else
41+ # Linux sed syntax
42+ sed_storage_version=" sed -i '43i // +kubebuilder:storageversion\n// +kubebuilder:conversion:hub'"
43+ fi
44+
3445 header_text " Generating project ${project} with flags: ${init_flags} "
3546 go mod init sigs.k8s.io/kubebuilder/testdata/$project # our repo autodetection will traverse up to the kb module if we don't do this
3647 header_text " Initializing project ..."
@@ -40,9 +51,16 @@ function scaffold_test_project {
4051 header_text ' Creating APIs ...'
4152 $kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false
4253 $kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false --force
43- $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation
54+ $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation --make=false
55+
56+ # Create API to test conversion from v1 to v2
4457 $kb create api --group crew --version v1 --kind FirstMate --controller=true --resource=true --make=false
45- $kb create webhook --group crew --version v1 --kind FirstMate --conversion
58+ $kb create api --group crew --version v2 --kind FirstMate --controller=false --resource=true --make=false
59+ $kb create webhook --group crew --version v1 --kind FirstMate --conversion --make=false
60+ # TODO: Remove it when we have the hub and spoke scaffolded by Kubebuilder
61+ # Apply the sed command based on project type
62+ eval " $sed_storage_version api/v1/firstMate_types.go"
63+
4664 $kb create api --group crew --version v1 --kind Admiral --plural=admirales --controller=true --resource=true --namespaced=false --make=false
4765 $kb create webhook --group crew --version v1 --kind Admiral --plural=admirales --defaulting
4866 # Controller for External types
@@ -59,14 +77,13 @@ function scaffold_test_project {
5977
6078 header_text ' Creating APIs ...'
6179 $kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false
62- $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation
80+ $kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation --make=false
6381
6482 $kb create api --group ship --version v1beta1 --kind Frigate --controller=true --resource=true --make=false
65- $kb create webhook --group ship --version v1beta1 --kind Frigate --conversion
6683 $kb create api --group ship --version v1 --kind Destroyer --controller=true --resource=true --namespaced=false --make=false
67- $kb create webhook --group ship --version v1 --kind Destroyer --defaulting
84+ $kb create webhook --group ship --version v1 --kind Destroyer --defaulting --make=false
6885 $kb create api --group ship --version v2alpha1 --kind Cruiser --controller=true --resource=true --namespaced=false --make=false
69- $kb create webhook --group ship --version v2alpha1 --kind Cruiser --programmatic-validation
86+ $kb create webhook --group ship --version v2alpha1 --kind Cruiser --programmatic-validation --make=false
7087
7188 $kb create api --group sea-creatures --version v1beta1 --kind Kraken --controller=true --resource=true --make=false
7289 $kb create api --group sea-creatures --version v1beta2 --kind Leviathan --controller=true --resource=true --make=false
@@ -80,15 +97,30 @@ function scaffold_test_project {
8097 # Webhook for External types
8198 $kb create webhook --group " cert-manager" --version v1 --kind Issuer --defaulting --external-api-path=github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1 --external-api-domain=io
8299 # Webhook for Core type
83- $kb create webhook --group core --version v1 --kind Pod --programmatic-validation
100+ $kb create webhook --group core --version v1 --kind Pod --programmatic-validation --make=false
84101 fi
85102
86103 if [[ $project =~ multigroup ]] || [[ $project =~ with-plugins ]] ; then
87104 header_text ' With Optional Plugins ...'
88105 header_text ' Creating APIs with deploy-image plugin ...'
89106 $kb create api --group example.com --version v1alpha1 --kind Memcached --image=memcached:1.6.26-alpine3.19 --image-container-command=" memcached,--memory-limit=64,-o,modern,-v" --image-container-port=" 11211" --run-as-user=" 1001" --plugins=" deploy-image/v1-alpha" --make=false
90107 $kb create api --group example.com --version v1alpha1 --kind Busybox --image=busybox:1.36.1 --plugins=" deploy-image/v1-alpha" --make=false
91- $kb create webhook --group example.com --version v1alpha1 --kind Memcached --programmatic-validation
108+ # Create only validation webhook for Memcached
109+ $kb create webhook --group example.com --version v1alpha1 --kind Memcached --programmatic-validation --make=false
110+ # Create API to check webhook --conversion from v1 to v2
111+ $kb create api --group example.com --version v1 --kind Wordpress --controller=true --resource=true --make=false
112+ $kb create api --group example.com --version v2 --kind Wordpress --controller=false --resource=true --make=false
113+ $kb create webhook --group example.com --version v1 --kind Wordpress --conversion --make=false
114+
115+ # TODO: Remove it when we have the hub and spoke scaffolded by Kubebuilder
116+ # Apply the sed command based on project type
117+ if [[ $project =~ multigroup ]]; then
118+ eval " $sed_storage_version api/example.com/v1/wordpress_types.go"
119+ fi
120+ if [[ $project =~ with-plugins ]]; then
121+ eval " $sed_storage_version api/v1/wordpress_types.go"
122+ fi
123+
92124 header_text ' Editing project with Grafana plugin ...'
93125 $kb edit --plugins=grafana.kubebuilder.io/v1-alpha
94126 fi
0 commit comments