An open API service indexing awesome lists of open source software.

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

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`.