Files
rancher/gotools/README.md
Tom Lebreux 027fc144f6 [v2.11] Use go tool for Go-based code generation (#51308)
* Use `go tool` for Go-based code generation (#51153)

* Add mockgen and controller-gen as go tools

* Do not install controller-gen or mockgen

* Do not write generate directive

* Add README for gotools

* Add usage instructions

* Add generation for useractivity

* Add generation for managementuser/rbac

* Add generation for dashboard/chart

* Add generation for catalogv2/system

* Add generation for management/auth

* Remove mockgen for fleetcluster

* Add generation for pkg/auth/providers/mocks

* Keep Go toolchain in sync

* Adjust package to `user`
2025-08-04 16:31:01 -04:00

1.3 KiB

Gotools

This directory contains Go-based tools to use with go tool.

Each tool is within its own directory with its own go.mod file to avoid dependency conflicts.

Managing tools

Using a tool

go tool -modfile <path to modfile> <tool>

For example, to use controller-gen:

go tool -modfile gotools/controller-gen/go.mod controller-gen -h

Add a new tool

From repository root:

TOOLNAME=<tool name>
mkdir -p gotools/"$TOOLNAME"
go mod init -modfile=gotools/"$TOOLNAME"/go.mod github.com/rancher/rancher/gotools/"$TOOLNAME"
go get -tool -modfile=gotools/"$TOOLNAME"/go.mod <module>@<version>

For example, controller-gen was added this way:

TOOLNAME=controller-gen
mkdir -p gotools/"$TOOLNAME"
go mod init -modfile=gotools/"$TOOLNAME"/go.mod github.com/rancher/rancher/gotools/"$TOOLNAME"
go get -tool -modfile=gotools/"$TOOLNAME"/go.mod sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.1

Update existing tool

From repository root:

TOOLNAME=<tool name>
go get -tool -modfile=gotools/"$TOOLNAME"/go.mod <module>@<new version>

For example, to update controller-gen to v0.17.3:

TOOLNAME=controller-gen
go get -tool -modfile=gotools/"$TOOLNAME"/go.mod sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.3