in entryMaker/config/config.go [82:227]
func (config *OneCRLConfig) loadConfig() error {
// load the config from configuration file
filename := config.oneCRLConfig
fmt.Printf("config file was: %v\n", filename)
if filename == DEFAULT_ONECRLCONFIG {
envFilename := os.Getenv("onecrlconfig")
fmt.Printf("Looking for config file in environment: %v\n", envFilename)
if 0 != len(envFilename) {
filename = envFilename
}
}
if len(filename) == 0 {
filename = DEFAULT_ONECRLCONFIG
}
data, err := ioutil.ReadFile(filename)
if nil != err {
return err
}
// Load the yaml into a map first - so we capture additional config options
configMap := map[string]string{}
yaml.Unmarshal(data, &configMap)
// Transfer entries from the map that we recognise
loaded := OneCRLConfig{}
var md mapstructure.Metadata
decoderConfig := &mapstructure.DecoderConfig{
Metadata: &md,
Result: &loaded,
}
decoder, err := mapstructure.NewDecoder(decoderConfig)
if err != nil {
panic(err)
}
if err := decoder.Decode(configMap); err != nil {
panic(err)
}
// Loop over the unused keys, add them to additional config
if len(md.Unused) > 0 {
if nil == config.AdditionalConfig {
config.AdditionalConfig = make(map[string]string)
}
for _, key := range md.Unused {
fmt.Printf("Key is %v\n", key)
config.AdditionalConfig[key] = configMap[key]
}
}
// Check the config values to see if any are already overridden
// for each value, if it's unset, copy the config file's value (if present)
if config.oneCRLEnvString == DEFAULT_ONECRLENV && loaded.oneCRLEnvString != "" {
config.oneCRLEnvString = loaded.oneCRLEnvString
}
if config.oneCRLBucketString == DEFAULT_ONECRLBUCKET && loaded.oneCRLBucketString != "" {
config.oneCRLBucketString = loaded.oneCRLBucketString
}
fmt.Printf("loaded bugzilla base is %s\n", loaded.BugzillaBase)
if config.BugzillaBase == PREFIX_BUGZILLA_PROD && loaded.BugzillaBase != "" {
fmt.Printf("overriding with loaded bugzilla base\n")
config.BugzillaBase = loaded.BugzillaBase
fmt.Printf("overridden bugzilla base is %s\n", config.BugzillaBase)
}
if config.BugzillaAPIKey == DEFAULT_DEFAULT {
// if it's set in config, use that value
if loaded.BugzillaAPIKey != "" {
config.BugzillaAPIKey = loaded.BugzillaAPIKey
} else {
// attempt to get a value from environment
config.BugzillaAPIKey = os.Getenv("bzapikey")
}
}
//Bug report settings
if config.BugProduct == DEFAULT_BUG_PRODUCT && loaded.BugProduct != "" {
config.BugProduct = loaded.BugProduct
}
if config.BugComponent == DEFAULT_BUG_COMPONENT && loaded.BugComponent != "" {
config.BugComponent = loaded.BugComponent
}
if config.BugVersion == DEFAULT_BUG_VERSION && loaded.BugVersion != "" {
config.BugVersion = loaded.BugVersion
}
if config.BugzillaReviewers == DEFAULT_DEFAULT && loaded.BugzillaReviewers != "" {
config.BugzillaReviewers = loaded.BugzillaReviewers
}
if config.BugzillaBlockee == DEFAULT_DEFAULT && loaded.BugzillaBlockee != "" {
config.BugzillaBlockee = loaded.BugzillaBlockee
}
if config.BugDescription == DEFAULT_DESCRIPTION && loaded.BugDescription != "" {
config.BugDescription = loaded.BugDescription
}
if config.KintoUser == DEFAULT_DEFAULT {
// if it's set in config, use that value
if loaded.KintoUser != "" {
config.KintoUser = loaded.KintoUser
} else {
// attempt to get a value from environment
config.KintoUser = os.Getenv("kintouser")
}
}
if config.Preview == DEFAULT_PREVIEW && loaded.Preview != "" {
config.Preview = loaded.Preview
}
if config.EnforceCRLChecks == DEFAULT_ENFORCE_CRL_CHECKS && loaded.EnforceCRLChecks != "" {
config.EnforceCRLChecks = loaded.EnforceCRLChecks
}
if config.KintoPassword == DEFAULT_DEFAULT {
// if it's set in config, use that value
if loaded.KintoPassword != "" {
config.KintoPassword = loaded.KintoPassword
} else {
// attempt to get a value from environment
config.KintoPassword = os.Getenv("kintopass")
}
}
if config.KintoToken == DEFAULT_DEFAULT {
// if it's set in config, use that value
if loaded.KintoToken != "" {
config.KintoToken = loaded.KintoToken
} else {
// attempt to get a value from environment
config.KintoToken = os.Getenv("kintotoken")
}
}
if config.KintoCollectionURL == DEFAULT_COLLECTION_URL && loaded.KintoCollectionURL != "" {
config.KintoCollectionURL = loaded.KintoCollectionURL
}
if len(config.KintoToken) == 0 && len(config.KintoUser) > 0 && len(config.KintoPassword) == 0 {
fmt.Printf("Please enter the password for user %s\n", config.KintoUser)
bytePassword, err := terminal.ReadPassword(int(syscall.Stdin))
if nil != err {
panic(err)
}
config.KintoPassword = string(bytePassword)
}
return nil
}