filesystem

package
v1.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2024 License: Apache-2.0 Imports: 8 Imported by: 135

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsAbs added in v1.30.0

func IsAbs(path string) bool

IsAbs is same as filepath.IsAbs on Unix.

func IsPathClean added in v1.30.0

func IsPathClean(path string) bool

IsPathClean will replace slashes to Separator (which is OS-specific). This will make sure that all slashes are the same before comparing.

func IsUnixDomainSocket added in v1.29.0

func IsUnixDomainSocket(filePath string) (bool, error)

IsUnixDomainSocket returns whether a given file is a AF_UNIX socket file

func MkdirAllWithPathCheck added in v1.29.0

func MkdirAllWithPathCheck(path string, perm os.FileMode) error

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"

func (*DefaultFs) Chtimes

func (fs *DefaultFs) Chtimes(name string, atime time.Time, mtime time.Time) error

Chtimes via os.Chtimes

func (*DefaultFs) Create

func (fs *DefaultFs) Create(name string) (File, error)

Create via os.Create

func (*DefaultFs) MkdirAll

func (fs *DefaultFs) MkdirAll(path string, perm os.FileMode) error

MkdirAll via os.MkdirAll

func (*DefaultFs) ReadDir

func (fs *DefaultFs) ReadDir(dirname string) ([]os.DirEntry, error)

ReadDir via os.ReadDir

func (*DefaultFs) ReadFile

func (fs *DefaultFs) ReadFile(filename string) ([]byte, error)

ReadFile via os.ReadFile

func (*DefaultFs) Remove added in v1.9.0

func (fs *DefaultFs) Remove(name string) error

Remove via os.Remove

func (*DefaultFs) RemoveAll

func (fs *DefaultFs) RemoveAll(path string) error

RemoveAll via os.RemoveAll

func (*DefaultFs) Rename

func (fs *DefaultFs) Rename(oldpath, newpath string) error

Rename via os.Rename

func (*DefaultFs) Stat

func (fs *DefaultFs) Stat(name string) (os.FileInfo, error)

Stat via os.Stat

func (*DefaultFs) TempDir added in v1.11.0

func (fs *DefaultFs) TempDir(dir, prefix string) (string, error)

TempDir via os.MkdirTemp

func (*DefaultFs) TempFile

func (fs *DefaultFs) TempFile(dir, prefix string) (File, error)

TempFile via os.CreateTemp

func (*DefaultFs) Walk

func (fs *DefaultFs) Walk(root string, walkFn filepath.WalkFunc) error

Walk via filepath.Walk

type FSErrorHandler

type FSErrorHandler func(err error)

FSErrorHandler is called when a fsnotify error occurs.

type FSEventHandler

type FSEventHandler func(event fsnotify.Event)

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL