Skip to content

Commit

Permalink
config file merging
Browse files Browse the repository at this point in the history
  • Loading branch information
abs3ntdev committed Mar 22, 2023
1 parent c5cc232 commit 47f2bf6
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ type Config struct {
var cliOptions struct {
destinationVersion string
migrationsPath string
configPath string
configPaths []string
editNewMigration bool

connString string
Expand Down Expand Up @@ -237,7 +237,7 @@ The word "last":
Args: cobra.ExactArgs(1),
Run: CompileCode,
}
cmdCodeCompile.Flags().StringVarP(&cliOptions.configPath, "config", "c", "", "config path (default is ./tern.conf)")
cmdCodeCompile.Flags().StringSliceVarP(&cliOptions.configPaths, "config", "c", []string{}, "config path (default is ./tern.conf)")

cmdCodeSnapshot := &cobra.Command{
Use: "snapshot PATH",
Expand Down Expand Up @@ -312,7 +312,7 @@ The word "last":
}

func addCoreConfigFlagsToCommand(cmd *cobra.Command) {
cmd.Flags().StringVarP(&cliOptions.configPath, "config", "c", "", "config path (default is ./tern.conf)")
cmd.Flags().StringSliceVarP(&cliOptions.configPaths, "config", "c", []string{}, "config path (default is ./tern.conf)")

cmd.Flags().StringVarP(&cliOptions.connString, "conn-string", "", "", "database connection string (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)")
cmd.Flags().StringVarP(&cliOptions.host, "host", "", "", "database host")
Expand Down Expand Up @@ -883,20 +883,21 @@ func LoadConfig() (*Config, error) {
return nil, err
}
// If no config path was set in CLI argument look in environment.
if cliOptions.configPath == "" {
cliOptions.configPath = os.Getenv("TERN_CONFIG")
if len(cliOptions.configPaths) == 0 {
if configEnv := os.Getenv("TERN_CONFIG"); configEnv != "" {
cliOptions.configPaths = append(cliOptions.configPaths, configEnv)
}
}

// If no config path was set in CLI or environment try default location.
if cliOptions.configPath == "" {
// Set default config path only if file exists.
if len(cliOptions.configPaths) == 0 {
if _, err := os.Stat("./tern.conf"); err == nil {
cliOptions.configPath = "./tern.conf"
cliOptions.configPaths = append(cliOptions.configPaths, "./tern.conf")
}
}

if cliOptions.configPath != "" {
err := appendConfigFromFile(config, cliOptions.configPath)
for _, configFile := range cliOptions.configPaths {
err := appendConfigFromFile(config, configFile)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 47f2bf6

Please sign in to comment.