44package main
55
66import (
7+ "bufio"
78 "bytes"
89 "flag"
910 "fmt"
@@ -38,12 +39,24 @@ type ChartInfo struct {
3839 extraImagesFiles []string
3940}
4041
42+ type stringSlice []string
43+
44+ func (s * stringSlice ) String () string {
45+ return strings .Join (* s , "," )
46+ }
47+
48+ func (s * stringSlice ) Set (value string ) error {
49+ * s = append (* s , value )
50+ return nil
51+ }
52+
4153func main () {
4254 args := os .Args
4355 var (
44- chartDirectory string
45- helmChartConfigMap string
46- carenVersion string
56+ chartDirectory string
57+ helmChartConfigMap string
58+ carenVersion string
59+ additionalYAMLFiles stringSlice
4760 )
4861 flagSet := flag .NewFlagSet (createImagesCMD , flag .ExitOnError )
4962 flagSet .StringVar (& chartDirectory , "chart-directory" , "" ,
@@ -52,6 +65,8 @@ func main() {
5265 "path to helm chart configmap for CAREN" )
5366 flagSet .StringVar (& carenVersion , "caren-version" , "" ,
5467 "CAREN version for images override" )
68+ flagSet .Var (& additionalYAMLFiles , "additional-yaml-files" ,
69+ "additional YAML images to include" )
5570 err := flagSet .Parse (args [1 :])
5671 if err != nil {
5772 fmt .Println ("failed to parse args" , err .Error ())
@@ -91,6 +106,12 @@ func main() {
91106 os .Exit (1 )
92107 }
93108 images = append (images , addonImages ... )
109+ additionalYAMLImages , err := getImagesFromYAMLFiles (additionalYAMLFiles )
110+ if err != nil {
111+ fmt .Println ("failed to get images from additional YAML files" , err .Error ())
112+ os .Exit (1 )
113+ }
114+ images = append (images , additionalYAMLImages ... )
94115 slices .Sort (images )
95116 images = slices .Compact (images )
96117 for _ , image := range images {
@@ -348,3 +369,32 @@ func getTemplatedHelmConfigMap(helmChartConfigMap string) (string, error) {
348369 }
349370 return b .String (), nil
350371}
372+
373+ func getImagesFromYAMLFiles (files []string ) ([]string , error ) {
374+ var images []string
375+ for _ , f := range files {
376+ file , err := os .Open (f )
377+ if err != nil {
378+ return nil , fmt .Errorf ("failed to open file %s with %w" , f , err )
379+ }
380+ defer file .Close ()
381+
382+ scanner := bufio .NewScanner (file )
383+ for scanner .Scan () {
384+ line := scanner .Text ()
385+ if strings .Contains (line , " image: " ) {
386+ // Get everything after "image: "
387+ image := strings .SplitAfterN (line , "image: " , 2 )
388+ if len (image ) == 2 {
389+ images = append (images , strings .TrimSpace (image [1 ]))
390+ }
391+ }
392+ }
393+
394+ err = scanner .Err ()
395+ if err != nil {
396+ return nil , fmt .Errorf ("failed to scan file %s: %w" , f , err )
397+ }
398+ }
399+ return images , nil
400+ }
0 commit comments