@@ -15,7 +15,7 @@ import (
15
15
"github.com/brocaar/chirpstack-gateway-bridge/internal/config"
16
16
)
17
17
18
- var cfgFile string // config file
18
+ var cfgFiles * [] string // config file
19
19
var version string
20
20
21
21
var rootCmd = & cobra.Command {
@@ -30,7 +30,7 @@ var rootCmd = &cobra.Command{
30
30
func init () {
31
31
cobra .OnInitialize (initConfig )
32
32
33
- rootCmd .PersistentFlags ().StringVarP ( & cfgFile , "config" , "c" , "" , "path to configuration file (optional)" )
33
+ cfgFiles = rootCmd .PersistentFlags ().StringSliceP ( "config" , "c" , [] string {} , "path to configuration file (optional)" )
34
34
rootCmd .PersistentFlags ().Int ("log-level" , 4 , "debug=5, info=4, error=2, fatal=1, panic=0" )
35
35
36
36
viper .BindPFlag ("general.log_level" , rootCmd .PersistentFlags ().Lookup ("log-level" ))
@@ -90,14 +90,22 @@ func Execute(v string) {
90
90
}
91
91
92
92
func initConfig () {
93
- if cfgFile != "" {
94
- b , err := ioutil .ReadFile (cfgFile )
95
- if err != nil {
96
- log .WithError (err ).WithField ("config" , cfgFile ).Fatal ("error loading config file" )
93
+ if cfgFiles != nil {
94
+ var filesMerged []byte
95
+ for _ , cfgFile := range * cfgFiles {
96
+ cfgFileContent , err := ioutil .ReadFile (cfgFile )
97
+ if err != nil {
98
+ log .WithError (err ).WithField ("config" , cfgFile ).Fatal ("error loading config file" )
99
+ }
100
+ filesMerged = bytes .Join ([][]byte {
101
+ filesMerged ,
102
+ cfgFileContent ,
103
+ }, []byte ("\n " ))
97
104
}
105
+
98
106
viper .SetConfigType ("toml" )
99
- if err := viper .ReadConfig (bytes .NewBuffer (b )); err != nil {
100
- log .WithError (err ).WithField ("config" , cfgFile ).Fatal ("error loading config file" )
107
+ if err := viper .ReadConfig (bytes .NewBuffer (filesMerged )); err != nil {
108
+ log .WithError (err ).WithField ("config" , cfgFiles ).Fatal ("error loading config file" )
101
109
}
102
110
} else {
103
111
viper .SetConfigName ("chirpstack-gateway-bridge" )
0 commit comments