code-generator <command> [input-flags]
where <command> can be one of:
- client
- lister
- informer
It is possible to run the code generation for multiple components at once code-generator client,lister,informer [input-flags]
-
--input-dir- The directory path where APIs are defined. Make sure that the types are defined in<inputDir>/pkg/apis/{$GROUP}/{$VERSION}. For example, if your input apis are defined intypes.goinsideexamples/pkg/apis/apps/v1/types.go, the input directory should be specified asexamples/pkg.{$GROUP}/{$VERSION}is appended in the input path. Note: This is the relative path to the input directory where APIs live. -
--output-dir- The directory where output clients are to be generated. It defaults to theclientsetfolder under current working directory.Clientsetwrappers would be generated inside<outputDir>/<clientset-name>/clientset.go.- Individual typed client wrappers would be inside
<outputDir>/<clientset-name>/${GROUP}/${VERSION}/${group_version}.go.
-
--clientset-api-path- The path to whereclientsetgenerated byk8s.io/code-genis present. -
--clientset-name- The name of the generated clientset package. It defaults toclientset. -
--group-versions- List of group versions in the formatgroup:version. Define multiple groups by specifying the flag again. For example, the inputs can be:--group-version="apps:v1"--group-versions="rbac:v1" --group-versions="apps:v1"--group-version="rbac:v1,v2"
-
--go-header-file- Path to the header file.
Example: To run it locally and see how it works, use the following command:
mkdir -p testdata/pkg
go run main.go client,lister,informer --clientset-name clusterclient --go-header-file examples/header.txt \
--clientset-api-path=github.com/kcp-dev/code-generator/examples/pkg/generated/clientset/versioned \
--input-dir examples/pkg/apis \
--output-dir testdata/pkg --group-versions example:v1
will create output folders in testdata/pkg.