1package referees 2 3import ( 4 "bytes" 5 "context" 6 "time" 7 8 "github.com/sirupsen/logrus" 9) 10 11type Referee interface { 12 Execute( 13 ctx context.Context, 14 startTime time.Time, 15 endTime time.Time, 16 ) (*bytes.Reader, error) 17 ArtifactBaseName() string 18 ArtifactType() string 19 ArtifactFormat() string 20} 21 22type refereeFactory func(executor interface{}, config *Config, log logrus.FieldLogger) Referee 23 24type Config struct { 25 Metrics *MetricsRefereeConfig `toml:"metrics,omitempty" json:"metrics" namespace:"metrics"` 26} 27 28var refereeFactories = []refereeFactory{ 29 newMetricsReferee, 30} 31 32func CreateReferees(executor interface{}, config *Config, log logrus.FieldLogger) []Referee { 33 if config == nil { 34 log.Debug("No referees configured") 35 return nil 36 } 37 38 var referees []Referee 39 for _, factory := range refereeFactories { 40 referee := factory(executor, config, log) 41 if referee != nil { 42 referees = append(referees, referee) 43 } 44 } 45 46 return referees 47} 48