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  }