mirror of https://github.com/databricks/cli.git
30 lines
838 B
Go
30 lines
838 B
Go
package vfs
|
|
|
|
import "io/fs"
|
|
|
|
// FS combines the fs.FS, fs.StatFS, fs.ReadDirFS, and fs.ReadFileFS interfaces.
|
|
// It mandates that Path implementations must support all these interfaces.
|
|
type FS interface {
|
|
fs.FS
|
|
fs.StatFS
|
|
fs.ReadDirFS
|
|
fs.ReadFileFS
|
|
}
|
|
|
|
// Path defines a read-only virtual file system interface for:
|
|
//
|
|
// 1. Intercepting file operations to inject custom logic (e.g., logging, access control).
|
|
// 2. Traversing directories to find specific leaf directories (e.g., .git).
|
|
// 3. Converting virtual paths to OS-native paths.
|
|
//
|
|
// Options 2 and 3 are not possible with the standard fs.FS interface.
|
|
// They are needed such that we can provide an instance to the sync package
|
|
// and still detect the containing .git directory and convert paths to native paths.
|
|
type Path interface {
|
|
FS
|
|
|
|
Parent() Path
|
|
|
|
Native() string
|
|
}
|