mirror of https://github.com/databricks/cli.git
30 lines
539 B
Go
30 lines
539 B
Go
|
package vfs
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"io/fs"
|
||
|
)
|
||
|
|
||
|
// FindLeafInTree returns the first path that holds `name`,
|
||
|
// traversing up to the root of the filesystem, starting at `p`.
|
||
|
func FindLeafInTree(p Path, name string) (Path, error) {
|
||
|
for p != nil {
|
||
|
_, err := fs.Stat(p, name)
|
||
|
|
||
|
// No error means we found the leaf in p.
|
||
|
if err == nil {
|
||
|
return p, nil
|
||
|
}
|
||
|
|
||
|
// ErrNotExist means we continue traversal up the tree.
|
||
|
if errors.Is(err, fs.ErrNotExist) {
|
||
|
p = p.Parent()
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return nil, fs.ErrNotExist
|
||
|
}
|