@@ -5,6 +5,7 @@ set -o nounset
5
5
set -o pipefail
6
6
7
7
SCRIPT_DIR=" $( cd -- " $( dirname -- " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
8
+ PROJECT_ROOT=" $SCRIPT_DIR /.."
8
9
export TERM=" xterm-256color"
9
10
10
11
bold=" $( tput bold) "
@@ -22,133 +23,86 @@ function qualify-gvs() {
22
23
23
24
for V in ${Vs// ,/ } ; do
24
25
res=" $res$join_char$APIS_PKG /$G /$V "
25
- join_char=" , "
26
+ join_char=" "
26
27
done
27
28
done
28
29
29
30
echo " $res "
30
31
}
31
32
32
- function qualify-gs() {
33
- APIS_PKG=" $1 "
34
- unset GROUPS
35
- IFS=' ' read -ra GROUPS <<< " $2"
36
- join_char=" "
37
- res=" "
38
-
39
- for G in " ${GROUPS[@]} " ; do
40
- res=" $res$join_char$APIS_PKG /$G "
41
- join_char=" ,"
42
- done
43
-
44
- echo " $res "
45
- }
46
-
47
33
VGOPATH=" $VGOPATH "
48
34
MODELS_SCHEMA=" $MODELS_SCHEMA "
49
- CLIENT_GEN=" $CLIENT_GEN "
50
- DEEPCOPY_GEN=" $DEEPCOPY_GEN "
51
- LISTER_GEN=" $LISTER_GEN "
52
- INFORMER_GEN=" $INFORMER_GEN "
53
- DEFAULTER_GEN=" $DEFAULTER_GEN "
54
- CONVERSION_GEN=" $CONVERSION_GEN "
55
35
OPENAPI_GEN=" $OPENAPI_GEN "
56
- APPLYCONFIGURATION_GEN=" $APPLYCONFIGURATION_GEN "
57
36
58
37
VIRTUAL_GOPATH=" $( mktemp -d) "
59
38
trap ' rm -rf "$GOPATH"' EXIT
60
39
61
40
# Setup virtual GOPATH so the codegen tools work as expected.
62
- (cd " $SCRIPT_DIR /.. " ; go mod download && " $VGOPATH " -o " $VIRTUAL_GOPATH " )
41
+ (cd " $PROJECT_ROOT " ; go mod download && " $VGOPATH " -o " $VIRTUAL_GOPATH " )
63
42
64
43
export GOROOT=" ${GOROOT:- " $( go env GOROOT) " } "
65
44
export GOPATH=" $VIRTUAL_GOPATH "
66
- export GO111MODULE=off
45
+
46
+ CODE_GEN_DIR=$( go list -m -f ' {{.Dir}}' k8s.io/code-generator)
47
+ source " ${CODE_GEN_DIR} /kube_codegen.sh"
67
48
68
49
IRONCORE_NET_ROOT=" github.com/ironcore-dev/ironcore-net"
69
50
ALL_GROUPS=" core"
70
51
ALL_VERSION_GROUPS=" core:v1alpha1"
71
52
72
53
echo " ${bold} Public types${normal} "
73
54
74
- echo " Generating ${blue} deepcopy${normal} "
75
- " $DEEPCOPY_GEN " \
76
- --output-base " $GOPATH /src" \
77
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
78
- --input-dirs " $( qualify-gvs " $IRONCORE_NET_ROOT /api" " $ALL_VERSION_GROUPS " ) " \
79
- -O zz_generated.deepcopy
55
+ echo " Generating ${blue} deepcopy, defaulter and conversion${normal} "
56
+ kube::codegen::gen_helpers \
57
+ --boilerplate " $SCRIPT_DIR /boilerplate.go.txt" \
58
+ " $PROJECT_ROOT /api"
80
59
81
60
echo " Generating ${blue} openapi${normal} "
61
+ input_dirs=($( qualify-gvs " ${IRONCORE_NET_ROOT} /api" " $ALL_VERSION_GROUPS " ) )
62
+ input_dirs+=(" ${IRONCORE_NET_ROOT} /apimachinery/api/net" )
82
63
" $OPENAPI_GEN " \
83
- --output-base " $GOPATH /src" \
64
+ --output-dir " $PROJECT_ROOT /client-go/openapi" \
65
+ --output-pkg " ${IRONCORE_NET_ROOT} /client-go/openapi" \
66
+ --output-file " zz_generated.openapi.go" \
67
+ --report-filename " $PROJECT_ROOT /client-go/openapi/api_violations.report" \
84
68
--go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
85
- --input-dirs " $( qualify-gvs " $IRONCORE_NET_ROOT /api" " $ALL_VERSION_GROUPS " ) " \
86
- --input-dirs " $IRONCORE_NET_ROOT /apimachinery/api/net" \
87
- --input-dirs " k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/version" \
88
- --input-dirs " k8s.io/api/core/v1" \
89
- --input-dirs " k8s.io/apimachinery/pkg/api/resource" \
90
- --output-package " $IRONCORE_NET_ROOT /client-go/openapi" \
91
- -O zz_generated.openapi \
92
- --report-filename " $SCRIPT_DIR /../client-go/openapi/api_violations.report"
93
-
94
- echo " Generating ${blue} applyconfiguration${normal} "
95
- applyconfigurationgen_external_apis+=(" k8s.io/apimachinery/pkg/apis/meta/v1" )
96
- applyconfigurationgen_external_apis+=(" $( qualify-gvs " $IRONCORE_NET_ROOT /api" " $ALL_VERSION_GROUPS " ) " )
69
+ " k8s.io/apimachinery/pkg/apis/meta/v1" \
70
+ " k8s.io/apimachinery/pkg/runtime" \
71
+ " k8s.io/apimachinery/pkg/version" \
72
+ " k8s.io/api/core/v1" \
73
+ " k8s.io/apimachinery/pkg/api/resource" \
74
+ " ${input_dirs[@]} "
75
+
76
+ echo " Generating ${blue} client, lister, informer and applyconfiguration${normal} "
77
+ applyconfigurationgen_external_apis=()
78
+ for GV in ${ALL_VERSION_GROUPS} ; do
79
+ IFS=: read -r G V <<< " ${GV}"
80
+ applyconfigurationgen_external_apis+=(" ${IRONCORE_NET_ROOT} /api/${G} /${V} :${IRONCORE_NET_ROOT} /client-go/applyconfigurations/${G} /${V} " )
81
+ done
97
82
applyconfigurationgen_external_apis_csv=$( IFS=,; echo " ${applyconfigurationgen_external_apis[*]} " )
98
- " $APPLYCONFIGURATION_GEN " \
99
- --output-base " $GOPATH /src" \
100
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
101
- --input-dirs " ${applyconfigurationgen_external_apis_csv} " \
102
- --openapi-schema <( " $MODELS_SCHEMA " --openapi-package " $IRONCORE_NET_ROOT /client-go/openapi" --openapi-title " ironcore-net" ) \
103
- --output-package " $IRONCORE_NET_ROOT /client-go/applyconfigurations"
104
83
105
- echo " Generating ${blue} client${normal} "
106
- " $CLIENT_GEN " \
107
- --output-base " $GOPATH /src" \
108
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
109
- --input " $( qualify-gvs " $IRONCORE_NET_ROOT /api" " $ALL_VERSION_GROUPS " ) " \
110
- --output-package " $IRONCORE_NET_ROOT /client-go" \
111
- --apply-configuration-package " $IRONCORE_NET_ROOT /client-go/applyconfigurations" \
112
- --clientset-name " ironcorenet" \
113
- --input-base " "
114
-
115
- echo " Generating ${blue} lister${normal} "
116
- " $LISTER_GEN " \
117
- --output-base " $GOPATH /src" \
118
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
119
- --input-dirs " $( qualify-gvs " $IRONCORE_NET_ROOT /api" " $ALL_VERSION_GROUPS " ) " \
120
- --output-package " $IRONCORE_NET_ROOT /client-go/listers"
84
+ # Do not rely on process substitution / GNU bash
85
+ tmp_schema_file=$( mktemp)
86
+ trap ' rm -f "$tmp_schema_file"' EXIT
87
+ " $MODELS_SCHEMA " --openapi-package " ${IRONCORE_NET_ROOT} /client-go/openapi" --openapi-title " ironcore-net" > " $tmp_schema_file "
121
88
122
- echo " Generating ${blue} informer${normal} "
123
- " $INFORMER_GEN " \
124
- --output-base " $GOPATH /src" \
125
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
126
- --input-dirs " $( qualify-gvs " $IRONCORE_NET_ROOT /api" " $ALL_VERSION_GROUPS " ) " \
127
- --versioned-clientset-package " $IRONCORE_NET_ROOT /client-go/ironcorenet" \
128
- --listers-package " $IRONCORE_NET_ROOT /client-go/listers" \
129
- --output-package " $IRONCORE_NET_ROOT /client-go/informers" \
130
- --single-directory
89
+ kube::codegen::gen_client \
90
+ --with-applyconfig \
91
+ --applyconfig-name " applyconfigurations" \
92
+ --applyconfig-externals " ${applyconfigurationgen_external_apis_csv} " \
93
+ --applyconfig-openapi-schema <( " $MODELS_SCHEMA " --openapi-package " ${IRONCORE_NET_ROOT} /client-go/openapi" --openapi-title " ironcore-net" ) \
94
+ --clientset-name " ironcorenet" \
95
+ --listers-name " listers" \
96
+ --informers-name " informers" \
97
+ --with-watch \
98
+ --output-dir " $PROJECT_ROOT /client-go" \
99
+ --output-pkg " ${IRONCORE_NET_ROOT} /client-go" \
100
+ --boilerplate " $SCRIPT_DIR /boilerplate.go.txt" \
101
+ " $PROJECT_ROOT /api"
131
102
132
103
echo " ${bold} Internal types${normal} "
133
104
134
- echo " Generating ${blue} deepcopy${normal} "
135
- " $DEEPCOPY_GEN " \
136
- --output-base " $GOPATH /src" \
137
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
138
- --input-dirs " $( qualify-gs " $IRONCORE_NET_ROOT /internal/apis" " $ALL_GROUPS " ) " \
139
- -O zz_generated.deepcopy
140
-
141
- echo " Generating ${blue} defaulter${normal} "
142
- " $DEFAULTER_GEN " \
143
- --output-base " $GOPATH /src" \
144
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
145
- --input-dirs " $( qualify-gvs " $IRONCORE_NET_ROOT /internal/apis" " $ALL_VERSION_GROUPS " ) " \
146
- -O zz_generated.defaults
147
-
148
- echo " Generating ${blue} conversion${normal} "
149
- " $CONVERSION_GEN " \
150
- --output-base " $GOPATH /src" \
151
- --go-header-file " $SCRIPT_DIR /boilerplate.go.txt" \
152
- --input-dirs " $( qualify-gs " $IRONCORE_NET_ROOT /internal/apis" " $ALL_GROUPS " ) " \
153
- --input-dirs " $( qualify-gvs " $IRONCORE_NET_ROOT /internal/apis" " $ALL_VERSION_GROUPS " ) " \
154
- -O zz_generated.conversion
105
+ echo " Generating ${blue} deepcopy, defaulter and conversion${normal} "
106
+ kube::codegen::gen_helpers \
107
+ --boilerplate " $SCRIPT_DIR /boilerplate.go.txt" \
108
+ " $PROJECT_ROOT /internal/apis"
0 commit comments