@@ -29,51 +29,54 @@ import (
29
29
"strings"
30
30
)
31
31
32
- var nonNamespacedKind bool
33
- var generate bool
34
- var CoreType bool
32
+ type ControllerArguments struct {
33
+ nonNamespacedKind bool
34
+ generate bool
35
+ CoreType bool
36
+ }
37
+
38
+ func AddCreateController (cmd * cobra.Command ) {
39
+ var c ControllerArguments
35
40
36
- var createControllerCmd = & cobra.Command {
37
- Use : "controller" ,
38
- Short : "Creates a controller for an API group, version and resource" ,
39
- Long : `Creates a controller for an API group, version and resource.
41
+ createControllerCmd : = & cobra.Command {
42
+ Use : "controller" ,
43
+ Short : "Creates a controller for an API group, version and resource" ,
44
+ Long : `Creates a controller for an API group, version and resource.
40
45
41
46
Also creates:
42
47
- controller reconcile function
43
48
- tests for the controller
44
49
` ,
45
- Example : `# Create a controller for resource "Bee" in the "insect" group with version "v1beta"
50
+ Example : `# Create a controller for resource "Bee" in the "insect" group with version "v1beta"
46
51
kubebuilder create controller --group insect --version v1beta1 --kind Bee
47
52
48
53
# Create a controller for k8s core type "Deployment" in the "apps" group with version "v1beta2"
49
54
kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type
50
55
` ,
51
- Run : RunCreateController ,
52
- }
53
-
54
- func AddCreateController (cmd * cobra.Command ) {
56
+ Run : c .RunCreateController ,
57
+ }
55
58
createutil .RegisterResourceFlags (createControllerCmd )
56
- createControllerCmd .Flags ().BoolVar (& nonNamespacedKind , "non-namespaced" , false , "if set, the API kind will be non namespaced" )
57
- createControllerCmd .Flags ().BoolVar (& generate , "generate" , true , "generate controller code" )
58
- createControllerCmd .Flags ().BoolVar (& CoreType , "core-type" , false , "generate controller for core type" )
59
+ createControllerCmd .Flags ().BoolVar (& c . nonNamespacedKind , "non-namespaced" , false , "if set, the API kind will be non namespaced" )
60
+ createControllerCmd .Flags ().BoolVar (& c . generate , "generate" , true , "generate controller code" )
61
+ createControllerCmd .Flags ().BoolVar (& c . CoreType , "core-type" , false , "generate controller for core type" )
59
62
cmd .AddCommand (createControllerCmd )
60
63
}
61
64
62
- func RunCreateController (cmd * cobra.Command , args []string ) {
65
+ func ( c * ControllerArguments ) RunCreateController (cmd * cobra.Command , args []string ) {
63
66
if _ , err := os .Stat ("pkg" ); err != nil {
64
67
log .Fatalf ("could not find 'pkg' directory. must run kubebuilder init before creating controller" )
65
68
}
66
69
67
70
util .GetDomain ()
68
- createutil . ValidateResourceFlags ()
71
+ c . Validate ()
69
72
70
73
cr := util .GetCopyright (createutil .Copyright )
71
74
72
75
fmt .Printf ("Creating controller ...\n " )
73
- CreateController (cr )
74
- if generate {
76
+ c . CreateController (cr )
77
+ if c . generate {
75
78
fmt .Printf ("Generating code for new controller... " +
76
- "Regenerate after editing controller files by running `kubebuilder generate clean; kubebuilder generate`.\n " )
79
+ "Regenerate after editing controller files by running `kubebuilder generate clean; kubebuilder generate`.\n " )
77
80
generatecmd .RunGenerate (cmd , args )
78
81
}
79
82
fmt .Printf ("Next: Run the controller and create an instance with:\n " +
@@ -82,7 +85,11 @@ func RunCreateController(cmd *cobra.Command, args []string) {
82
85
"$ kubectl apply -f hack/sample/" + strings .ToLower (createutil .KindName ) + ".yaml\n " )
83
86
}
84
87
85
- func CreateController (boilerplate string ) {
88
+ func (c * ControllerArguments ) Validate () {
89
+ createutil .ValidateResourceFlags ()
90
+ }
91
+
92
+ func (c * ControllerArguments ) CreateController (boilerplate string ) {
86
93
args := controllerTemplateArgs {
87
94
boilerplate ,
88
95
util .Domain ,
@@ -92,8 +99,8 @@ func CreateController(boilerplate string) {
92
99
createutil .ResourceName ,
93
100
util .Repo ,
94
101
inflect .NewDefaultRuleset ().Pluralize (createutil .KindName ),
95
- nonNamespacedKind ,
96
- CoreType ,
102
+ c . nonNamespacedKind ,
103
+ c . CoreType ,
97
104
}
98
105
99
106
dir , err := os .Getwd ()
@@ -103,4 +110,4 @@ func CreateController(boilerplate string) {
103
110
fmt .Printf ("Edit your controller function...\n " )
104
111
doController (dir , args )
105
112
doControllerTest (dir , args )
106
- }
113
+ }
0 commit comments