@@ -3,6 +3,8 @@ package main
33import (
44 "fmt"
55 "os"
6+ "regexp"
7+ "strings"
68 "sync"
79
810 "github.com/flanksource/batch-runner/pkg"
@@ -29,6 +31,32 @@ var rootCmd = &cobra.Command{
2931 Run : run ,
3032}
3133
34+ func parseConfigFile (configFiles []string ) ([]batchv1alpha1.Config , error ) {
35+
36+ var configs []batchv1alpha1.Config
37+
38+ for _ , configFile := range configFiles {
39+ configData , err := os .ReadFile (configFile )
40+ if err != nil {
41+ return nil , fmt .Errorf ("error reading config file %s: %v" , configFile , err )
42+ }
43+
44+ re := regexp .MustCompile (`(?m)^---\n` )
45+ for _ , chunk := range re .Split (string (configData ), - 1 ) {
46+ if strings .TrimSpace (chunk ) == "" {
47+ continue
48+ }
49+
50+ var config batchv1alpha1.Config
51+ if err := yaml .Unmarshal ([]byte (chunk ), & config ); err != nil {
52+ return nil , fmt .Errorf ("error parsing config file: %w" , err )
53+ }
54+ configs = append (configs , config )
55+ }
56+ }
57+ return configs , nil
58+ }
59+
3260func run (cmd * cobra.Command , args []string ) {
3361 ctx , cancel , err := duty .Start ("batch-runner" , duty .ClientOnly )
3462 defer cancel ()
@@ -45,20 +73,12 @@ func run(cmd *cobra.Command, args []string) {
4573
4674 wg := sync.WaitGroup {}
4775
48- for _ , configFile := range configFiles {
49- if configFile == "" {
50- continue
51- }
52- configData , err := os .ReadFile (configFile )
53- if err != nil {
54- logger .Fatalf ("Error reading config file: %v" , err )
55- }
56-
57- var config batchv1alpha1.Config
58- if err := yaml .Unmarshal (configData , & config ); err != nil {
59- logger .Fatalf ("Error parsing config file: %v" , err )
60- os .Exit (1 )
61- }
76+ configs , err := parseConfigFile (configFiles )
77+ if err != nil {
78+ logger .Fatalf (err .Error ())
79+ os .Exit (1 )
80+ }
81+ for _ , config := range configs {
6282
6383 wg .Add (1 )
6484
@@ -77,7 +97,7 @@ var configFiles []string
7797
7898func main () {
7999 rootCmd .Flags ().StringArrayVarP (& configFiles , "config" , "c" , []string {}, "Path to config file" )
80- rootCmd .Flags ().MarkDeprecated ("config" , "Pass the config files as arguments instead" )
100+ _ = rootCmd .Flags ().MarkDeprecated ("config" , "Pass the config files as arguments instead" )
81101 logger .BindFlags (rootCmd .Flags ())
82102
83103 if err := rootCmd .Execute (); err != nil {
0 commit comments