func()

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
}