@@ -15,7 +15,7 @@ import (
1515 "github.com/brocaar/chirpstack-gateway-bridge/internal/config"
1616)
1717
18- var cfgFile string // config file
18+ var cfgFiles * [] string // config file
1919var version string
2020
2121var rootCmd = & cobra.Command {
@@ -30,7 +30,7 @@ var rootCmd = &cobra.Command{
3030func init () {
3131 cobra .OnInitialize (initConfig )
3232
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)" )
3434 rootCmd .PersistentFlags ().Int ("log-level" , 4 , "debug=5, info=4, error=2, fatal=1, panic=0" )
3535
3636 viper .BindPFlag ("general.log_level" , rootCmd .PersistentFlags ().Lookup ("log-level" ))
@@ -90,14 +90,22 @@ func Execute(v string) {
9090}
9191
9292func 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 " ))
97104 }
105+
98106 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" )
101109 }
102110 } else {
103111 viper .SetConfigName ("chirpstack-gateway-bridge" )
0 commit comments