func readConfigFile()

in cmd/cpe2cve/config.go [141:194]


func readConfigFile(file string) (config, error) {
	f, err := os.Open(file)
	if err != nil {
		return config{}, err
	}
	defer f.Close()

	var cfg config

	switch ext := path.Ext(file); ext {
	case ".json":
		// Example:
		// {
		// 	"CVEsAt": 3,
		// 	"ProviderAt": 2,
		// 	"Feeds": {
		// 	  "foo": ["foo.json"],
		// 	  "bar": ["bar.json", "bar2.json.gz"]
		// 	 }
		// }
		err = json.NewDecoder(f).Decode(&cfg)
	case ".toml":
		// Example:
		// CVEsAt = 3
		// ProviderAt = 2
		// [Feeds]
		// foo = ["foo.json"]
		// bar = ["bar.json", "bar2.json.gz"]
		_, err = toml.NewDecoder(f).Decode(&cfg)
	default:
		return cfg, fmt.Errorf("unsupported file extension: %q", ext)
	}

	if err == nil {
		// set defaults
		if cfg.InFieldSeparator == "" {
			cfg.InFieldSeparator = "\t"
		}
		if cfg.InRecordSeparator == "" {
			cfg.InRecordSeparator = ","
		}
		if cfg.OutFieldSeparator == "" {
			cfg.OutFieldSeparator = "\t"
		}
		if cfg.OutRecordSeparator == "" {
			cfg.OutRecordSeparator = ","
		}
		if cfg.NumProcessors == 0 {
			cfg.NumProcessors = 1
		}
	}

	return cfg, err
}