referees/referees.go (38 lines of code) (raw):
package referees
import (
"bytes"
"context"
"time"
"github.com/sirupsen/logrus"
)
type Referee interface {
Execute(
ctx context.Context,
startTime time.Time,
endTime time.Time,
) (*bytes.Reader, error)
ArtifactBaseName() string
ArtifactType() string
ArtifactFormat() string
}
type refereeFactory func(executor interface{}, config *Config, log logrus.FieldLogger) Referee
type Config struct {
Metrics *MetricsRefereeConfig `toml:"metrics,omitempty" json:"metrics" namespace:"metrics"`
}
var refereeFactories = []refereeFactory{
newMetricsReferee,
}
func CreateReferees(executor interface{}, config *Config, log logrus.FieldLogger) []Referee {
if config == nil {
log.Debug("No referees configured")
return nil
}
var referees []Referee
for _, factory := range refereeFactories {
referee := factory(executor, config, log)
if referee != nil {
referees = append(referees, referee)
}
}
return referees
}