func loadConfigs(opts map[string]string) { paths := cli.FindParentPaths(".jira.d/config.yml") // prepend paths = append([]string{"/etc/jira-cli.yml"}, paths...) for _, file := range paths { if stat, err := os.Stat(file); err == nil { // check to see if config file is exectuable if stat.Mode()&0111 == 0 { parseYaml(file, opts) } else { log.Debug("Found Executable Config file: %s", file) // it is executable, so run it and try to parse the output cmd := exec.Command(file) stdout := bytes.NewBufferString("") cmd.Stdout = stdout cmd.Stderr = bytes.NewBufferString("") if err := cmd.Run(); err != nil { log.Error("%s is exectuable, but it failed to execute: %s\n%s", file, err, cmd.Stderr) os.Exit(1) } yaml.Unmarshal(stdout.Bytes(), &opts) } } } }
func loadConfigs(opts map[string]interface{}) { populateEnv(opts) paths := cli.FindParentPaths(".jira.d/config.yml") // prepend paths = append([]string{"/etc/jira-cli.yml"}, paths...) // iterate paths in reverse for i := len(paths) - 1; i >= 0; i-- { file := paths[i] if stat, err := os.Stat(file); err == nil { tmp := make(map[string]interface{}) // check to see if config file is exectuable if stat.Mode()&0111 == 0 { parseYaml(file, tmp) } else { log.Debug("Found Executable Config file: %s", file) // it is executable, so run it and try to parse the output cmd := exec.Command(file) stdout := bytes.NewBufferString("") cmd.Stdout = stdout cmd.Stderr = bytes.NewBufferString("") if err := cmd.Run(); err != nil { log.Error("%s is exectuable, but it failed to execute: %s\n%s", file, err, cmd.Stderr) os.Exit(1) } yaml.Unmarshal(stdout.Bytes(), &tmp) } for k, v := range tmp { if _, ok := opts[k]; !ok { log.Debug("Setting %q to %#v from %s", k, v, file) opts[k] = v } } populateEnv(opts) } } }