package config import ( "fmt" "io" "io/ioutil" "github.com/ghodss/yaml" "github.com/pkg/errors" ) // PipelineDefaults defines the structure of the pipeline defaults type PipelineDefaults struct { Defaults []Config `json:"defaults"` } // ReadPipelineDefaults loads defaults and returns its content func (d *PipelineDefaults) ReadPipelineDefaults(defaultSources []io.ReadCloser) error { defer func() { for _, def := range defaultSources { def.Close() } }() for _, def := range defaultSources { var c Config var err error content, err := ioutil.ReadAll(def) if err != nil { return errors.Wrapf(err, "error reading %v", def) } err = yaml.Unmarshal(content, &c) if err != nil { return NewParseError(fmt.Sprintf("error unmarshalling %q: %v", content, err)) } d.Defaults = append(d.Defaults, c) } return nil }