package featuremgmt

import (
	"io/ioutil"

	"gopkg.in/yaml.v2"
)

type configBody struct {
	// define variables that can be used in expressions
	Vars map[string]interface{} `yaml:"vars"`

	// Define and override feature flag properties
	Flags []FeatureFlag `yaml:"flags"`

	// keep track of where the fie was loaded from
	filename string
}

// will read a single configfile
func readConfigFile(filename string) (*configBody, error) {
	cfg := &configBody{}

	// Can ignore gosec G304 because the file path is forced within config subfolder
	//nolint:gosec
	yamlFile, err := ioutil.ReadFile(filename)
	if err != nil {
		return cfg, err
	}

	err = yaml.Unmarshal(yamlFile, cfg)
	cfg.filename = filename
	return cfg, err
}
