github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/config/defaults.go (about) 1 package config 2 3 import ( 4 "fmt" 5 "io" 6 7 "github.com/ghodss/yaml" 8 "github.com/pkg/errors" 9 ) 10 11 // PipelineDefaults defines the structure of the pipeline defaults 12 type PipelineDefaults struct { 13 Defaults []Config `json:"defaults"` 14 } 15 16 // ReadPipelineDefaults loads defaults and returns its content 17 func (d *PipelineDefaults) ReadPipelineDefaults(defaultSources []io.ReadCloser) error { 18 19 defer func() { 20 for _, def := range defaultSources { 21 def.Close() 22 } 23 }() 24 25 for _, def := range defaultSources { 26 var c Config 27 var err error 28 29 content, err := io.ReadAll(def) 30 if err != nil { 31 return errors.Wrapf(err, "error reading %v", def) 32 } 33 34 err = yaml.Unmarshal(content, &c) 35 if err != nil { 36 return NewParseError(fmt.Sprintf("error unmarshalling %q: %v", content, err)) 37 } 38 39 d.Defaults = append(d.Defaults, c) 40 } 41 return nil 42 }