// Visit implements the Visitor interface on the items described in the Builder. // Note that some visitor sources are not traversable more than once, or may // return different results. If you wish to operate on the same set of resources // multiple times, use the Infos() method. func (r *Result) Visit(fn VisitorFunc) error { if r.err != nil { return r.err } err := r.visitor.Visit(fn) return utilerrors.FilterOut(err, r.ignoreErrors...) }
// Filter removes items from the ErrorList that match the provided fns. func (list ErrorList) Filter(fns ...utilerrors.Matcher) ErrorList { err := utilerrors.FilterOut(list.ToAggregate(), fns...) if err == nil { return nil } // FilterOut takes an Aggregate and returns an Aggregate return fromAggregate(err.(utilerrors.Aggregate)) }
// Filter removes items from the ErrorList that match the provided fns. func (list ErrorList) Filter(fns ...utilerrors.Matcher) ErrorList { err := utilerrors.FilterOut(utilerrors.NewAggregate(list), fns...) if err == nil { return nil } // FilterOut that takes an Aggregate returns an Aggregate agg := err.(utilerrors.Aggregate) return ErrorList(agg.Errors()) }
// Filter removes items from the ValidationErrorList that match the provided fns. func (list ValidationErrorList) Filter(fns ...errors.Matcher) ValidationErrorList { err := errors.FilterOut(errors.NewAggregate(list), fns...) if err == nil { return nil } // FilterOut that takes an Aggregate returns an Aggregate agg := err.(errors.Aggregate) return ValidationErrorList(agg.Errors()) }
// Infos returns an array of all of the resource infos retrieved via traversal. // Will attempt to traverse the entire set of visitors only once, and will return // a cached list on subsequent calls. func (r *Result) Infos() ([]*Info, error) { if r.err != nil { return nil, r.err } if r.info != nil { return r.info, nil } infos := []*Info{} err := r.visitor.Visit(func(info *Info) error { infos = append(infos, info) return nil }) err = errors.FilterOut(err, r.ignoreErrors...) r.info, r.err = infos, err return infos, err }