https://github.com/kcp-dev/code-generator
Generators for workspace-aware clientsets, informers, and listers
https://github.com/kcp-dev/code-generator
Last synced: about 1 year ago
JSON representation
Generators for workspace-aware clientsets, informers, and listers
- Host: GitHub
- URL: https://github.com/kcp-dev/code-generator
- Owner: kcp-dev
- License: apache-2.0
- Created: 2022-04-20T14:54:46.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-28T14:50:29.000Z (about 1 year ago)
- Last Synced: 2025-04-28T15:40:51.774Z (about 1 year ago)
- Language: Go
- Size: 26.4 MB
- Stars: 4
- Watchers: 8
- Forks: 15
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
## Code Generators for KCP-aware informers and listers
### Usage:
```
code-generator [input-flags]
```
where `` can be one of:
- lister
- informer
It is possible to run the code generation for multiple components at once `code-generator lister,informer [input-flags]`
#### Input flags:
1. `--input-dir` - The directory path where APIs are defined. Make sure that the types are defined in `/pkg/apis/{$GROUP}/{$VERSION}`. For example, if your input apis are defined in `types.go` inside `examples/pkg/apis/apps/v1/types.go`, the input directory should be specified as `examples/pkg`. `{$GROUP}/{$VERSION}` is appended in the input path.
**Note**: This is the relative path to the input directory where APIs live.
2. `--output-dir` - The directory where output clients are to be generated. It defaults to the `output` folder under current working directory.
- Listers are output to `/listers/${GROUP}/${VERSION}/${TYPE}.go`
- Individual informers are output to `/informers/externalversions/${GROUP}/${VERSION}/${TYPE}.go`
3. `--clientset-api-path` - The path to where `clientset` generated by `k8s.io/code-gen` is present.
4. `--group-versions` - List of group versions in the format `group: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"`
5. `--go-header-file` - Path to the header file.
Example:
To run it locally and see how it works, use the following command:
```
go run main.go informer,lister --go-header-file testdata/header.txt
--clientset-api-path=github.com/kcp-dev/code-generator/testdata/pkg/generated/clientset/versioned
--input-dir testdata/pkg/apis
--output-dir testdata/pkg --group-versions example:v1
```
creates output folders in `testdata/pkg/informers` and `testdata/pkg/listers`.