package executor import ( "fmt" schemepkg "git.buran.team/main/cep/scheme" ) type FindContainer func(string) (Container, error) type Checker interface { Check() *TaskResult } func NewChecker(global *Global, ticket *Ticket, finder FindContainer, checkerScheme schemepkg.Checker) (Checker, error) { switch checkerScheme.Kind { case schemepkg.CHECKER_KIND_SEQUENTIAL: checks := []Check{} for _, checkScheme := range checkerScheme.KindSequential.Checks { container, err := finder(checkScheme.ContainerID) if err != nil { return nil, fmt.Errorf("can't create checker: %w", err) } check, err := NewCheck(global, ticket, checkScheme, container) if err != nil { return nil, fmt.Errorf("can't create checker: %w", err) } checks = append(checks, check) } return NewSequentialChecker(global, ticket, checks) case schemepkg.CHECKER_KIND_PARALLEL: checks := []Check{} for _, checkScheme := range checkerScheme.KindParallel.Checks { container, err := finder(checkScheme.ContainerID) if err != nil { return nil, fmt.Errorf("can't create checker: %w", err) } check, err := NewCheck(global, ticket, checkScheme, container) if err != nil { return nil, fmt.Errorf("can't create checker: %w", err) } checks = append(checks, check) } return NewParallelChecker(global, ticket, checks) } return nil, ErrKindUnknown }