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