package executor import ( "fmt" schemepkg "git.buran.team/main/cep/scheme" ) type Result struct { Code int StdoutProcessors []Processor StderrProcessors []Processor } func NewResult(resultScheme schemepkg.Result) (*Result, error) { stdoutProcessors := []Processor{} if resultScheme.Stdout != nil { for _, processorScheme := range resultScheme.Stdout { processor, err := NewProcessor(processorScheme) if err != nil { return nil, fmt.Errorf("can't create result: %w", err) } stdoutProcessors = append(stdoutProcessors, processor) } } stderrProcessors := []Processor{} if resultScheme.Stderr != nil { for _, processorScheme := range resultScheme.Stderr { processor, err := NewProcessor(processorScheme) if err != nil { return nil, fmt.Errorf("can't create result: %w", err) } stderrProcessors = append(stderrProcessors, processor) } } return &Result{ Code: resultScheme.Code, StdoutProcessors: stdoutProcessors, StderrProcessors: stderrProcessors, }, nil } func (this *Result) Check(code int, stdout []byte, stderr []byte) bool { if code != this.Code { return false } for _, processor := range this.StdoutProcessors { if !processor.Process(stdout) { return false } } for _, processor := range this.StderrProcessors { if !processor.Process(stderr) { return false } } return true }