@@ -115,6 +115,20 @@ func (rm *ResourceManager) Apply(resources []client.Object) error {
115
115
116
116
// ApplyFromFiles creates or updates Kubernetes resources defined within the provided YAML files.
117
117
func (rm * ResourceManager ) ApplyFromFiles (files []string , namespace string ) error {
118
+ for _ , file := range files {
119
+ data , err := rm .GetFileContents (file )
120
+ if err != nil {
121
+ return err
122
+ }
123
+
124
+ if err = rm .ApplyFromBuffer (data , namespace ); err != nil {
125
+ return err
126
+ }
127
+ }
128
+ return nil
129
+ }
130
+
131
+ func (rm * ResourceManager ) ApplyFromBuffer (buffer * bytes.Buffer , namespace string ) error {
118
132
ctx , cancel := context .WithTimeout (context .Background (), rm .TimeoutConfig .CreateTimeout )
119
133
defer cancel ()
120
134
@@ -150,7 +164,7 @@ func (rm *ResourceManager) ApplyFromFiles(files []string, namespace string) erro
150
164
return nil
151
165
}
152
166
153
- return rm .readAndHandleObjects (handlerFunc , files )
167
+ return rm .readAndHandleObject (handlerFunc , buffer )
154
168
}
155
169
156
170
// Delete deletes Kubernetes resources defined as Go objects.
@@ -213,36 +227,41 @@ func (rm *ResourceManager) DeleteFromFiles(files []string, namespace string) err
213
227
return nil
214
228
}
215
229
216
- return rm .readAndHandleObjects (handlerFunc , files )
217
- }
218
-
219
- func (rm * ResourceManager ) readAndHandleObjects (
220
- handle func (unstructured.Unstructured ) error ,
221
- files []string ,
222
- ) error {
223
230
for _ , file := range files {
224
231
data , err := rm .GetFileContents (file )
225
232
if err != nil {
226
233
return err
227
234
}
228
235
229
- decoder := yaml .NewYAMLOrJSONDecoder (data , 4096 )
230
- for {
231
- obj := unstructured.Unstructured {}
232
- if err := decoder .Decode (& obj ); err != nil {
233
- if errors .Is (err , io .EOF ) {
234
- break
235
- }
236
- return fmt .Errorf ("error decoding resource: %w" , err )
237
- }
236
+ if err = rm .readAndHandleObject (handlerFunc , data ); err != nil {
237
+ return err
238
+ }
239
+ }
238
240
239
- if len (obj .Object ) == 0 {
240
- continue
241
- }
241
+ return nil
242
+ }
242
243
243
- if err := handle (obj ); err != nil {
244
- return err
244
+ func (rm * ResourceManager ) readAndHandleObject (
245
+ handle func (unstructured.Unstructured ) error ,
246
+ data * bytes.Buffer ,
247
+ ) error {
248
+ decoder := yaml .NewYAMLOrJSONDecoder (data , 4096 )
249
+
250
+ for {
251
+ obj := unstructured.Unstructured {}
252
+ if err := decoder .Decode (& obj ); err != nil {
253
+ if errors .Is (err , io .EOF ) {
254
+ break
245
255
}
256
+ return fmt .Errorf ("error decoding resource: %w" , err )
257
+ }
258
+
259
+ if len (obj .Object ) == 0 {
260
+ continue
261
+ }
262
+
263
+ if err := handle (obj ); err != nil {
264
+ return err
246
265
}
247
266
}
248
267
0 commit comments