/
args.go
58 lines (47 loc) · 2.13 KB
/
args.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package args
import (
"path"
"github.com/spf13/pflag"
clientgenTypes "k8s.io/code-generator/cmd/client-gen/types"
codegenutil "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
)
var DefaultInputDirs = []string{}
type CustomArgs struct {
// Name of the controller to generate.
Name string
// A sorted list of group versions to generate. For each of them the package path is found
// in GroupVersionToInputPath.
Groups []clientgenTypes.GroupVersions
// Overrides for which types should be included in the client.
Types map[clientgenTypes.GroupVersion][]string
ApiPackage string
ClientPackage string
ListerPackage string
InformerPackage string
}
func NewDefaults() (*args.GeneratorArgs, *CustomArgs) {
genericArgs := args.Default().WithoutDefaultFlagParsing()
customArgs := &CustomArgs{
Name: "example",
ApiPackage: "k8s.io/api",
ClientPackage: "k8s.io/client-go/kubernetes",
InformerPackage: "k8s.io/client-go/informers",
ListerPackage: "k8s.io/client-go/listers",
}
genericArgs.CustomArgs = customArgs
genericArgs.InputDirs = DefaultInputDirs
if pkg := codegenutil.CurrentPackage(); len(pkg) != 0 {
genericArgs.OutputPackagePath = path.Join(pkg, "generated/controllers")
}
return genericArgs, customArgs
}
func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet, apiPackage, informerPackage, listerPackage string) {
gvsBuilder := NewGroupVersionsBuilder(&ca.Groups)
pflag.Var(NewInputBasePathValue(gvsBuilder, &ca.ApiPackage, apiPackage), "api-package", "path to the api package.")
pflag.StringVar(&ca.ClientPackage, "client-package", ca.ClientPackage, "path to the versioned (externalversions) informer package.")
pflag.StringVar(&ca.InformerPackage, "informer-package", ca.InformerPackage, "path to the versioned (externalversions) informer package.")
pflag.StringVar(&ca.ListerPackage, "lister-package", ca.ListerPackage, "path to the lister package.")
pflag.Var(NewGVTypesValue(gvsBuilder, &ca.Types, []string{}), "types", "list of group/version/type for which controller should receive change events.")
pflag.StringVarP(&ca.Name, "name", "n", ca.Name, "the name of the generated controller.")
}