in pkg/resource/builder.go [1086:1131]
func (b *Builder) visitByPaths() *Result {
result := &Result{
singleItemImplied: !b.dir && !b.stream && len(b.paths) == 1,
targetsSingleItems: true,
}
if len(b.resources) != 0 {
return result.withError(fmt.Errorf("when paths, URLs, or stdin is provided as input, you may not specify resource arguments as well"))
}
if len(b.names) != 0 {
return result.withError(fmt.Errorf("name cannot be provided when a path is specified"))
}
if len(b.resourceTuples) != 0 {
return result.withError(fmt.Errorf("resource/name arguments cannot be provided when a path is specified"))
}
var visitors Visitor
if b.continueOnError {
visitors = EagerVisitorList(b.paths)
} else {
visitors = VisitorList(b.paths)
}
if b.flatten {
visitors = NewFlattenListVisitor(visitors, b.objectTyper, b.mapper)
}
// only items from disk can be refetched
if b.latest {
// must set namespace prior to fetching
if b.defaultNamespace {
visitors = NewDecoratedVisitor(visitors, SetNamespace(b.namespace))
}
visitors = NewDecoratedVisitor(visitors, RetrieveLatest)
}
if b.labelSelector != nil {
selector, err := labels.Parse(*b.labelSelector)
if err != nil {
return result.withError(fmt.Errorf("the provided selector %q is not valid: %v", *b.labelSelector, err))
}
visitors = NewFilteredVisitor(visitors, FilterByLabelSelector(selector))
}
result.visitor = visitors
result.sources = b.paths
return result
}