Documentation
¶
Index ¶
- Constants
- Variables
- func FileExists(p string) (bool, error)
- func FindInParents(dir, filename string) (string, error)
- func IsCaseInsensitiveLocation(fs FS, dirPath string, warnFunc func(string)) (bool, error)
- func IsDir(p string) (bool, error)
- func IsDirEmpty(name string) (bool, error)
- func PruneEmptyDirectories(dirPath string) ([]string, error)
- func VerifyAbsPath(absPath, basePath string) error
- func VerifyNoSymlinksInPath(path, root string) error
- func VerifyRelPath(relPath, basePath string) error
- func VerifySafeFilename(absPath string) error
- type FS
- type OSFS
- type RewindableReader
- type WriterThenReader
Constants ¶
const (
DefaultDirectoryMask = 0o755
)
Variables ¶
Functions ¶
func FileExists ¶ added in v0.106.0
func FindInParents ¶ added in v0.105.0
FindInParents Returns the first occurrence of filename going up the dir tree
func IsCaseInsensitiveLocation ¶ added in v1.21.0
IsCaseInsensitiveLocation returns true if dirPath is a directory on a case-insensitive filesystem. dirPath must be writable. If it fails to delete the file, it uses warnFunc to emit a warning message.
func IsDirEmpty ¶ added in v0.106.0
func PruneEmptyDirectories ¶ added in v0.106.0
PruneEmptyDirectories iterates through the directory tree, removing empty directories, and directories that only contain empty directories.
func VerifyAbsPath ¶ added in v0.106.0
func VerifyNoSymlinksInPath ¶ added in v1.64.0
VerifyNoSymlinksInPath checks that none of the directory levels from the given path up to the root are symlinks. It traverses the directory tree from the specified path up to the root or "." and verifies that no symlinks are encountered.
func VerifyRelPath ¶ added in v0.106.0
func VerifySafeFilename ¶ added in v0.106.0
VerifySafeFilename checks that the given file name is absolute and does not contain path traversal
Types ¶
type FS ¶ added in v1.21.0
type FS interface {
// Touch creates a file at path.
Touch(path string) error
// Exists returns true if there is a file at path. It follows
// symbolic links.
Exists(path string) (bool, error)
// Remove deletes the file at path.
Remove(path string) error
}
FS is a tiny filesystem abstraction. The standard io/fs does not support any write operations, see https://github.com/golang/go/issues/45757.
type RewindableReader ¶
type RewindableReader interface {
io.ReadSeeker
// Rewind allows sets RewindableReader to start re-reading the same data.
Rewind() error
// Name returns a user-visible name for underlying storage. It may help debug some issues.
Name() string
}
RewindableReader allows repeatedly reading the same stream.
type WriterThenReader ¶
type WriterThenReader interface {
io.Writer
// StartReading stops writing and returns a RewindableReader that will allow repeatedly
// reading the data and the total length of data. The WriterThenReader should be
// discarded; calls to Write() after StartReading() will fail.
StartReading() (RewindableReader, int64, error)
// Name returns a user-visible name for underlying storage. It may help debug some issues.
Name() string
}
WriterThenReader writes data to storage, then allows reading it. It is suitable for repeatedly processing large volumes of data.
func NewFileWriterThenReader ¶
func NewFileWriterThenReader(basename string) (WriterThenReader, error)