@@ -52,12 +52,12 @@ func (opts *Generate) Generate() error {
52
52
}
53
53
54
54
if opts .OutputDir == "" {
55
- cwd , err := os .Getwd ()
56
- if err != nil {
57
- return fmt .Errorf ("failed to get working directory: %w" , err )
55
+ cwd , getWdErr := os .Getwd ()
56
+ if getWdErr != nil {
57
+ return fmt .Errorf ("failed to get working directory: %w" , getWdErr )
58
58
}
59
59
opts .OutputDir = cwd
60
- if _ , err : = os .Stat (opts .OutputDir ); err == nil {
60
+ if _ , err = os .Stat (opts .OutputDir ); err == nil {
61
61
log .Warn ("Using current working directory to re-scaffold the project" )
62
62
log .Warn ("This directory will be cleaned up and all files removed before the re-generation" )
63
63
@@ -69,40 +69,41 @@ func (opts *Generate) Generate() error {
69
69
err = util .RunCmd ("Running cleanup" , "sh" , "-c" , cleanupCmd )
70
70
if err != nil {
71
71
log .Error ("Cleanup failed:" , err )
72
- return err
72
+ return fmt . Errorf ( "cleanup failed: %w" , err )
73
73
}
74
74
}
75
75
}
76
76
77
- if err : = createDirectory (opts .OutputDir ); err != nil {
78
- return err
77
+ if err = createDirectory (opts .OutputDir ); err != nil {
78
+ return fmt . Errorf ( "error creating output directory %q: %w" , opts . OutputDir , err )
79
79
}
80
80
81
- if err : = changeWorkingDirectory (opts .OutputDir ); err != nil {
82
- return err
81
+ if err = changeWorkingDirectory (opts .OutputDir ); err != nil {
82
+ return fmt . Errorf ( "error changing working directory %q: %w" , opts . OutputDir , err )
83
83
}
84
84
85
- if err : = kubebuilderInit (projectConfig ); err != nil {
86
- return err
85
+ if err = kubebuilderInit (projectConfig ); err != nil {
86
+ return fmt . Errorf ( "error initializing project config: %w" , err )
87
87
}
88
88
89
- if err : = kubebuilderEdit (projectConfig ); err != nil {
90
- return err
89
+ if err = kubebuilderEdit (projectConfig ); err != nil {
90
+ return fmt . Errorf ( "error editing project config: %w" , err )
91
91
}
92
92
93
- if err : = kubebuilderCreate (projectConfig ); err != nil {
94
- return err
93
+ if err = kubebuilderCreate (projectConfig ); err != nil {
94
+ return fmt . Errorf ( "error creating project config: %w" , err )
95
95
}
96
96
97
- if err : = migrateGrafanaPlugin (projectConfig , opts .InputDir , opts .OutputDir ); err != nil {
98
- return err
97
+ if err = migrateGrafanaPlugin (projectConfig , opts .InputDir , opts .OutputDir ); err != nil {
98
+ return fmt . Errorf ( "error migrating Grafana plugin: %w" , err )
99
99
}
100
100
101
101
if hasHelmPlugin (projectConfig ) {
102
- if err : = kubebuilderHelmEdit (); err != nil {
103
- return err
102
+ if err = kubebuilderHelmEdit (); err != nil {
103
+ return fmt . Errorf ( "error editing Helm plugin: %w" , err )
104
104
}
105
105
}
106
+
106
107
return migrateDeployImagePlugin (projectConfig )
107
108
}
108
109
@@ -111,7 +112,7 @@ func (opts *Generate) Validate() error {
111
112
var err error
112
113
opts .InputDir , err = getInputPath (opts .InputDir )
113
114
if err != nil {
114
- return err
115
+ return fmt . Errorf ( "error getting input path %q: %w" , opts . InputDir , err )
115
116
}
116
117
117
118
_ , err = exec .LookPath ("kubebuilder" )
@@ -134,31 +135,38 @@ func loadProjectConfig(inputDir string) (store.Store, error) {
134
135
// Helper function to create the output directory.
135
136
func createDirectory (outputDir string ) error {
136
137
if err := os .MkdirAll (outputDir , 0o755 ); err != nil {
137
- return fmt .Errorf ("failed to create output directory %s : %w" , outputDir , err )
138
+ return fmt .Errorf ("failed to create output directory %q : %w" , outputDir , err )
138
139
}
139
140
return nil
140
141
}
141
142
142
143
// Helper function to change the current working directory.
143
144
func changeWorkingDirectory (outputDir string ) error {
144
145
if err := os .Chdir (outputDir ); err != nil {
145
- return fmt .Errorf ("failed to change the working directory to %s : %w" , outputDir , err )
146
+ return fmt .Errorf ("failed to change the working directory to %q : %w" , outputDir , err )
146
147
}
147
148
return nil
148
149
}
149
150
150
151
// Initializes the project with Kubebuilder.
151
152
func kubebuilderInit (s store.Store ) error {
152
153
args := append ([]string {"init" }, getInitArgs (s )... )
153
- return util .RunCmd ("kubebuilder init" , "kubebuilder" , args ... )
154
+ if err := util .RunCmd ("kubebuilder init" , "kubebuilder" , args ... ); err != nil {
155
+ return fmt .Errorf ("failed to run kubebuilder init command: %w" , err )
156
+ }
157
+
158
+ return nil
154
159
}
155
160
156
161
// Edits the project to enable or disable multigroup layout.
157
162
func kubebuilderEdit (s store.Store ) error {
158
163
if s .Config ().IsMultiGroup () {
159
164
args := []string {"edit" , "--multigroup" }
160
- return util .RunCmd ("kubebuilder edit" , "kubebuilder" , args ... )
165
+ if err := util .RunCmd ("kubebuilder edit" , "kubebuilder" , args ... ); err != nil {
166
+ return fmt .Errorf ("failed to run kubebuilder edit command: %w" , err )
167
+ }
161
168
}
169
+
162
170
return nil
163
171
}
164
172
@@ -171,15 +179,15 @@ func kubebuilderCreate(s store.Store) error {
171
179
172
180
// First, scaffold all APIs
173
181
for _ , r := range resources {
174
- if err : = createAPI (r ); err != nil {
182
+ if err = createAPI (r ); err != nil {
175
183
return fmt .Errorf ("failed to create API for %s/%s/%s: %w" , r .Group , r .Version , r .Kind , err )
176
184
}
177
185
}
178
186
179
187
// Then, scaffold all webhooks
180
188
// We cannot create a webhook for an API that does not exist
181
189
for _ , r := range resources {
182
- if err : = createWebhook (r ); err != nil {
190
+ if err = createWebhook (r ); err != nil {
183
191
return fmt .Errorf ("failed to create webhook for %s/%s/%s: %w" , r .Group , r .Version , r .Kind , err )
184
192
}
185
193
}
@@ -198,12 +206,12 @@ func migrateGrafanaPlugin(s store.Store, src, des string) error {
198
206
return fmt .Errorf ("failed to decode grafana plugin config: %w" , err )
199
207
}
200
208
201
- if err : = kubebuilderGrafanaEdit (); err != nil {
202
- return err
209
+ if err = kubebuilderGrafanaEdit (); err != nil {
210
+ return fmt . Errorf ( "error editing Grafana plugin: %w" , err )
203
211
}
204
212
205
- if err : = grafanaConfigMigrate (src , des ); err != nil {
206
- return err
213
+ if err = grafanaConfigMigrate (src , des ); err != nil {
214
+ return fmt . Errorf ( "error migrating Grafana config: %w" , err )
207
215
}
208
216
209
217
return kubebuilderGrafanaEdit ()
@@ -233,7 +241,11 @@ func migrateDeployImagePlugin(s store.Store) error {
233
241
func createAPIWithDeployImage (resourceData v1alpha1.ResourceData ) error {
234
242
args := append ([]string {"create" , "api" }, getGVKFlagsFromDeployImage (resourceData )... )
235
243
args = append (args , getDeployImageOptions (resourceData )... )
236
- return util .RunCmd ("kubebuilder create api" , "kubebuilder" , args ... )
244
+ if err := util .RunCmd ("kubebuilder create api" , "kubebuilder" , args ... ); err != nil {
245
+ return fmt .Errorf ("failed to run kubebuilder create api command: %w" , err )
246
+ }
247
+
248
+ return nil
237
249
}
238
250
239
251
// Helper function to get input path.
@@ -247,7 +259,7 @@ func getInputPath(inputPath string) (string, error) {
247
259
}
248
260
projectPath := fmt .Sprintf ("%s/%s" , inputPath , yaml .DefaultPath )
249
261
if _ , err := os .Stat (projectPath ); os .IsNotExist (err ) {
250
- return "" , fmt .Errorf ("project path %s does not exist: %w" , projectPath , err )
262
+ return "" , fmt .Errorf ("project path %q does not exist: %w" , projectPath , err )
251
263
}
252
264
return inputPath , nil
253
265
}
@@ -349,7 +361,11 @@ func createAPI(res resource.Resource) error {
349
361
args = append (args , "--external-api-domain" , res .Domain )
350
362
}
351
363
352
- return util .RunCmd ("kubebuilder create api" , "kubebuilder" , args ... )
364
+ if err := util .RunCmd ("kubebuilder create api" , "kubebuilder" , args ... ); err != nil {
365
+ return fmt .Errorf ("failed to run kubebuilder create api command: %w" , err )
366
+ }
367
+
368
+ return nil
353
369
}
354
370
355
371
// Gets flags for API resource creation.
@@ -381,7 +397,12 @@ func createWebhook(res resource.Resource) error {
381
397
}
382
398
args := append ([]string {"create" , "webhook" }, getGVKFlags (res )... )
383
399
args = append (args , getWebhookResourceFlags (res )... )
384
- return util .RunCmd ("kubebuilder create webhook" , "kubebuilder" , args ... )
400
+
401
+ if err := util .RunCmd ("kubebuilder create webhook" , "kubebuilder" , args ... ); err != nil {
402
+ return fmt .Errorf ("failed to run kubebuilder create webhook command: %w" , err )
403
+ }
404
+
405
+ return nil
385
406
}
386
407
387
408
// Gets flags for webhook creation.
@@ -412,9 +433,13 @@ func getWebhookResourceFlags(res resource.Resource) []string {
412
433
func copyFile (src , des string ) error {
413
434
bytesRead , err := os .ReadFile (src )
414
435
if err != nil {
415
- return fmt .Errorf ("source file path %s does not exist: %w" , src , err )
436
+ return fmt .Errorf ("source file path %q does not exist: %w" , src , err )
416
437
}
417
- return os .WriteFile (des , bytesRead , 0o755 )
438
+ if err = os .WriteFile (des , bytesRead , 0o755 ); err != nil {
439
+ return fmt .Errorf ("failed to write file %q: %w" , des , err )
440
+ }
441
+
442
+ return nil
418
443
}
419
444
420
445
// Migrates Grafana configuration files.
0 commit comments