Documentation ¶
Index ¶
- func IsUnixDomainSocket(filePath string) (bool, error)
- func MkdirAllWithPathCheck(path string, perm os.FileMode) error
- func WatchUntil(ctx context.Context, pollInterval time.Duration, path string, ...)
- type DefaultFs
- func (fs *DefaultFs) Chtimes(name string, atime time.Time, mtime time.Time) error
- func (fs *DefaultFs) Create(name string) (File, error)
- func (fs *DefaultFs) MkdirAll(path string, perm os.FileMode) error
- func (fs *DefaultFs) ReadDir(dirname string) ([]os.DirEntry, error)
- func (fs *DefaultFs) ReadFile(filename string) ([]byte, error)
- func (fs *DefaultFs) Remove(name string) error
- func (fs *DefaultFs) RemoveAll(path string) error
- func (fs *DefaultFs) Rename(oldpath, newpath string) error
- func (fs *DefaultFs) Stat(name string) (os.FileInfo, error)
- func (fs *DefaultFs) TempDir(dir, prefix string) (string, error)
- func (fs *DefaultFs) TempFile(dir, prefix string) (File, error)
- func (fs *DefaultFs) Walk(root string, walkFn filepath.WalkFunc) error
- type FSErrorHandler
- type FSEventHandler
- type FSWatcher
- type File
- type Filesystem
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsUnixDomainSocket ¶ added in v1.29.0
IsUnixDomainSocket returns whether a given file is a AF_UNIX socket file
func MkdirAllWithPathCheck ¶ added in v1.29.0
MkdirAllWithPathCheck checks if path exists already. If not, it creates a directory named path, along with any necessary parents, and returns nil, or else returns an error. Permission bits perm (before umask) are used for all directories that MkdirAllWithPathCheck creates. If path is already a directory, MkdirAllWithPathCheck does nothing and returns nil. NOTE: In case of Windows NTFS, mount points are implemented as reparse-point (similar to symlink) and do not represent actual directory. Hence Directory existence check for windows NTFS will NOT check for dir, but for symlink presence.
func WatchUntil ¶ added in v1.30.0
func WatchUntil(ctx context.Context, pollInterval time.Duration, path string, eventHandler func(), errorHandler func(err error))
WatchUntil watches the specified path for changes and blocks until ctx is canceled. eventHandler() must be non-nil, and pollInterval must be greater than 0. eventHandler() is invoked whenever a change event is observed or pollInterval elapses. errorHandler() is invoked (if non-nil) whenever an error occurs initializing or watching the specified path.
If path is a directory, only the directory and immediate children are watched.
If path does not exist or cannot be watched, an error is passed to errorHandler() and eventHandler() is called at pollInterval.
Multiple observed events may collapse to a single invocation of eventHandler().
eventHandler() is invoked immediately after successful initialization of the filesystem watch, in case the path changed concurrent with calling WatchUntil().
Types ¶
type DefaultFs ¶
type DefaultFs struct {
// contains filtered or unexported fields
}
DefaultFs implements Filesystem using same-named functions from "os" and "io"
type FSErrorHandler ¶
type FSErrorHandler func(err error)
FSErrorHandler is called when a fsnotify error occurs.
type FSEventHandler ¶
FSEventHandler is called when a fsnotify event occurs.
type FSWatcher ¶
type FSWatcher interface { // Initializes the watcher with the given watch handlers. // Called before all other methods. Init(FSEventHandler, FSErrorHandler) error // Starts listening for events and errors. // When an event or error occurs, the corresponding handler is called. Run() // Add a filesystem path to watch AddWatch(path string) error }
FSWatcher is a callback-based filesystem watcher abstraction for fsnotify.
func NewFsnotifyWatcher ¶
func NewFsnotifyWatcher() FSWatcher
NewFsnotifyWatcher returns an implementation of FSWatcher that continuously listens for fsnotify events and calls the event handler as soon as an event is received.
type File ¶
type File interface { // for now, the only os.File methods used are those below, add more as necessary Name() string Write(b []byte) (n int, err error) Sync() error Close() error }
File is an interface that we can use to mock various filesystem operations typically accessed through the File object from the "os" package
type Filesystem ¶
type Filesystem interface { // from "os" Stat(name string) (os.FileInfo, error) Create(name string) (File, error) Rename(oldpath, newpath string) error MkdirAll(path string, perm os.FileMode) error Chtimes(name string, atime time.Time, mtime time.Time) error RemoveAll(path string) error Remove(name string) error // from "os" ReadFile(filename string) ([]byte, error) TempDir(dir, prefix string) (string, error) TempFile(dir, prefix string) (File, error) ReadDir(dirname string) ([]os.DirEntry, error) Walk(root string, walkFn filepath.WalkFunc) error }
Filesystem is an interface that we can use to mock various filesystem operations
func NewTempFs ¶ added in v1.22.0
func NewTempFs() Filesystem
NewTempFs returns a fake Filesystem in temporary directory, useful for unit tests