Documentation ¶
Overview ¶
Copyright (C) 2020-2022 Arm Limited or its affiliates and Contributors. All rights reserved.
SPDX-License-Identifier: Apache-2.0
Copyright (C) 2020-2022 Arm Limited or its affiliates and Contributors. All rights reserved.
SPDX-License-Identifier: Apache-2.0
Package filesystem defines utilities with regards to filesystem access./*
Distributed lock using lock files https://fileinfo.com/extension/lock
Index ¶
- Constants
- Variables
- func Chmod(name string, mode os.FileMode) error
- func CleanDir(dir string) (err error)
- func ConvertFileSystemError(err error) error
- func ConvertToIOFilesystem(filesystem FS) (fs.FS, error)
- func ConvertToOSFile(f File) (osFile *os.File)
- func Copy(src string, dest string) (err error)
- func CopyBetweenFS(ctx context.Context, srcFs FS, src string, destFs FS, dest string) (err error)
- func CopyBetweenFSWithExclusionPatterns(ctx context.Context, srcFs FS, src string, destFs FS, dest string, ...) (err error)
- func CopyBetweenFSWithExclusionRegexes(ctx context.Context, srcFs FS, src string, destFs FS, dest string, ...) (err error)
- func CopyToDirectory(src, destDirectory string) error
- func CopyToDirectoryWithContext(ctx context.Context, src, destDirectory string) error
- func CopyToFile(srcFile, destFile string) error
- func CopyToFileWithContext(ctx context.Context, srcFile, destFile string) error
- func CurrentDirectory() (string, error)
- func EndsWithPathSeparator(fs FS, filePath string) bool
- func ExcludeAll(files []string, exclusionPatterns ...string) ([]string, error)
- func ExcludeFiles(files []string, regexes []*regexp.Regexp) (cleansedList []string, err error)
- func Exists(path string) bool
- func FilePathParentsOnFilesystem(fs FS, fp string) (parents []string)
- func FileTreeDepth(fs FS, root, filePath string) (depth int64, err error)
- func FilepathParents(fp string) []string
- func FilepathStem(fp string) string
- func FindAll(dir string, extensions ...string) (files []string, err error)
- func GenerateTestFileTree(t *testing.T, fs FS, testDir, basePath string, withLinks bool, ...) []string
- func GetFileSize(name string) (size int64, err error)
- func Glob(pattern string) ([]string, error)
- func IdentityPathConverterFunc(path string) string
- func IsDir(path string) (result bool, err error)
- func IsDirectory(fi os.FileInfo) bool
- func IsEmpty(name string) (empty bool, err error)
- func IsFile(path string) (result bool, err error)
- func IsFileHandleUnset(fh uintptr) bool
- func IsPathExcluded(path string, exclusionPatterns ...*regexp.Regexp) bool
- func IsPathExcludedFromPatterns(path string, pathSeparator rune, exclusionPatterns ...string) bool
- func IsPathNotExist(err error) bool
- func IsRegularFile(fi os.FileInfo) bool
- func IsSymLink(fi os.FileInfo) bool
- func ListDirTree(dirPath string, list *[]string) error
- func ListDirTreeWithContextAndExclusionPatterns(ctx context.Context, fs FS, dirPath string, list *[]string, ...) (err error)
- func Ls(dir string) (files []string, err error)
- func LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error)
- func LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, ...) (files []string, err error)
- func LsWithExclusionPatterns(fs FS, dir string, regexes []*regexp.Regexp) (names []string, err error)
- func Lstat(name string) (fileInfo os.FileInfo, err error)
- func MkDir(dir string) (err error)
- func Move(src string, dest string) error
- func MoveBetweenFS(ctx context.Context, srcFs FS, src string, destFs FS, dest string) (err error)
- func NewExclusionRegexList(pathSeparator rune, exclusionPatterns ...string) ([]*regexp.Regexp, error)
- func NewExtendedOsFs() afero.Fs
- func NewOSPathExistRule(when bool) validation.Rule
- func NewOSPathValidationRule(when bool) validation.Rule
- func NewPathExistRule(filesystem FS, when bool) validation.Rule
- func NewPathValidationRule(filesystem FS, when bool) validation.Rule
- func NewZipFileSystem(fs FS, source string, limits ILimits) (zipFs ICloseableFS, zipFile File, err error)
- func NewZipFileSystemFromStandardFileSystem(source string, limits ILimits) (ICloseableFS, File, error)
- func PathSeparator() rune
- func ReadFile(name string) ([]byte, error)
- func ReadFileContent(ctx context.Context, file File) ([]byte, error)
- func ReadFileWithLimits(filename string, limits ILimits) ([]byte, error)
- func RemoveWithPrivileges(ctx context.Context, dir string) error
- func Rm(dir string) error
- func Stat(name string) (os.FileInfo, error)
- func SubDirectories(directory string) ([]string, error)
- func TempDir(dir string, prefix string) (name string, err error)
- func TempDirInTempDir(prefix string) (name string, err error)
- func TempDirectory() string
- func TouchTempFile(dir string, prefix string) (filename string, err error)
- func TouchTempFileInTempDir(prefix string) (filename string, err error)
- func Unzip(source, destination string) ([]string, error)
- func UnzipWithContextAndLimits(ctx context.Context, source string, destination string, limits ILimits) ([]string, error)
- func WriteFile(filename string, data []byte, perm os.FileMode) error
- func Zip(source string, destination string) error
- type DiskUsage
- type ExtendedOsFs
- type FS
- func ConvertFromIOFilesystem(filesystem fs.FS) (FS, error)
- func GetGlobalFileSystem() FS
- func NewEmbedFileSystem(fs *embed.FS) (FS, error)
- func NewFs(fsType FilesystemType) FS
- func NewInMemoryFileSystem() FS
- func NewStandardFileSystem() FS
- func NewVirtualFileSystem(vfs afero.Fs, fsType FilesystemType, pathConverter func(path string) string) FS
- type File
- type FileTimeInfo
- type FilesystemType
- type IChowner
- type ICloseableFS
- type IFileHash
- type IForceRemover
- type ILimits
- type ILinkReader
- type ILinker
- type ILock
- type IStater
- type ISymLinker
- type Limits
- type RemoteLockFile
- func (l *RemoteLockFile) IsStale() bool
- func (l *RemoteLockFile) Lock(ctx context.Context) error
- func (l *RemoteLockFile) LockWithTimeout(ctx context.Context, timeout time.Duration) error
- func (l *RemoteLockFile) MakeStale(ctx context.Context) error
- func (l *RemoteLockFile) ReleaseIfStale(ctx context.Context) error
- func (l *RemoteLockFile) TryLock(ctx context.Context) (err error)
- func (l *RemoteLockFile) Unlock(ctx context.Context) error
- type UsageStat
- func (d *UsageStat) GetFree() uint64
- func (d *UsageStat) GetInodesFree() uint64
- func (d *UsageStat) GetInodesTotal() uint64
- func (d *UsageStat) GetInodesUsed() uint64
- func (d *UsageStat) GetInodesUsedPercent() float64
- func (d *UsageStat) GetTotal() uint64
- func (d *UsageStat) GetUsed() uint64
- func (d *UsageStat) GetUsedPercent() float64
- type VFS
- func (fs *VFS) ChangeOwnership(name string, owner *user.User) error
- func (fs *VFS) ChangeOwnershipRecursively(ctx context.Context, path string, owner *user.User) (err error)
- func (fs *VFS) Chmod(name string, mode os.FileMode) (err error)
- func (fs *VFS) ChmodRecursively(ctx context.Context, path string, mode os.FileMode) (err error)
- func (fs *VFS) Chown(name string, uid, gid int) (err error)
- func (fs *VFS) ChownRecursively(ctx context.Context, path string, uid, gid int) (err error)
- func (fs *VFS) Chtimes(name string, atime time.Time, mtime time.Time) (err error)
- func (fs *VFS) CleanDir(dir string) error
- func (fs *VFS) CleanDirWithContext(ctx context.Context, dir string) error
- func (fs *VFS) CleanDirWithContextAndExclusionPatterns(ctx context.Context, dir string, exclusionPatterns ...string) (err error)
- func (fs *VFS) Close() error
- func (fs *VFS) ConvertFilePath(name string) string
- func (fs *VFS) ConvertToAbsolutePath(rootPath string, paths ...string) ([]string, error)
- func (fs *VFS) ConvertToRelativePath(rootPath string, paths ...string) ([]string, error)
- func (fs *VFS) Copy(src string, dest string) (err error)
- func (fs *VFS) CopyToDirectory(src, destDirectory string) error
- func (fs *VFS) CopyToDirectoryWithContext(ctx context.Context, src, destDirectory string) (err error)
- func (fs *VFS) CopyToFile(src string, dest string) error
- func (fs *VFS) CopyToFileWithContext(ctx context.Context, src string, dest string) (err error)
- func (fs *VFS) CopyWithContext(ctx context.Context, src string, dest string) error
- func (fs *VFS) CopyWithContextAndExclusionPatterns(ctx context.Context, src string, dest string, exclusionPatterns ...string) error
- func (fs *VFS) CreateFile(name string) (File, error)
- func (fs *VFS) CurrentDirectory() (string, error)
- func (fs *VFS) DiskUsage(name string) (usage DiskUsage, err error)
- func (fs *VFS) ExcludeAll(files []string, exclusionPatterns ...string) ([]string, error)
- func (fs *VFS) Exists(path string) bool
- func (fs *VFS) FetchFileOwner(name string) (owner *user.User, err error)
- func (fs *VFS) FetchOwners(name string) (uid, gid int, err error)
- func (fs *VFS) FileHash(hashAlgo string, path string) (string, error)
- func (fs *VFS) FileHashWithContext(ctx context.Context, hashAlgo string, path string) (hash string, err error)
- func (fs *VFS) FindAll(dir string, extensions ...string) (files []string, err error)
- func (fs *VFS) GarbageCollect(root string, durationSinceLastAccess time.Duration) error
- func (fs *VFS) GarbageCollectWithContext(ctx context.Context, root string, durationSinceLastAccess time.Duration) error
- func (fs *VFS) GenericOpen(name string) (File, error)
- func (fs *VFS) GetFileSize(name string) (size int64, err error)
- func (fs *VFS) GetType() FilesystemType
- func (fs *VFS) Glob(pattern string) (matches []string, err error)
- func (fs *VFS) IsDir(path string) (result bool, err error)
- func (fs *VFS) IsEmpty(name string) (empty bool, err error)
- func (fs *VFS) IsFile(path string) (result bool, err error)
- func (fs *VFS) IsLink(path string) (result bool, err error)
- func (fs *VFS) IsZip(path string) bool
- func (fs *VFS) IsZipWithContext(ctx context.Context, path string) (ok bool, err error)
- func (fs *VFS) Link(oldname, newname string) (err error)
- func (fs *VFS) ListDirTree(dirPath string, list *[]string) error
- func (fs *VFS) ListDirTreeWithContext(ctx context.Context, dirPath string, list *[]string) error
- func (fs *VFS) ListDirTreeWithContextAndExclusionPatterns(ctx context.Context, dirPath string, list *[]string, ...) (err error)
- func (fs *VFS) Lls(dir string) (files []os.FileInfo, err error)
- func (fs *VFS) LlsFromOpenedDirectory(dir File) ([]os.FileInfo, error)
- func (fs *VFS) Ls(dir string) (names []string, err error)
- func (fs *VFS) LsFromOpenedDirectory(dir File) ([]string, error)
- func (fs *VFS) LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error)
- func (fs *VFS) LsRecursiveFromOpenedDirectory(ctx context.Context, dir File, includeDirectories bool) (files []string, err error)
- func (fs *VFS) LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, ...) (files []string, err error)
- func (fs *VFS) LsRecursiveWithExclusionPatternsAndLimits(ctx context.Context, dir string, limits ILimits, includeDirectories bool, ...) (files []string, err error)
- func (fs *VFS) LsWithExclusionPatterns(dir string, exclusionPatterns ...string) (names []string, err error)
- func (fs *VFS) Lstat(name string) (fileInfo os.FileInfo, err error)
- func (fs *VFS) MkDir(dir string) (err error)
- func (fs *VFS) MkDirAll(dir string, perm os.FileMode) (err error)
- func (fs *VFS) Move(src string, dest string) error
- func (fs *VFS) MoveWithContext(ctx context.Context, src string, dest string) (err error)
- func (fs *VFS) NewRemoteLockFile(id string, dirToLock string) ILock
- func (fs *VFS) Open(name string) (doublestar.File, error)
- func (fs *VFS) OpenFile(name string, flag int, perm os.FileMode) (File, error)
- func (fs *VFS) PathSeparator() rune
- func (fs *VFS) ReadFile(filename string) (content []byte, err error)
- func (fs *VFS) ReadFileContent(ctx context.Context, file File, limits ILimits) (content []byte, err error)
- func (fs *VFS) ReadFileWithContext(ctx context.Context, filename string) ([]byte, error)
- func (fs *VFS) ReadFileWithContextAndLimits(ctx context.Context, filename string, limits ILimits) ([]byte, error)
- func (fs *VFS) ReadFileWithLimits(filename string, limits ILimits) ([]byte, error)
- func (fs *VFS) Readlink(name string) (value string, err error)
- func (fs *VFS) RemoveWithContext(ctx context.Context, dir string) error
- func (fs *VFS) RemoveWithContextAndExclusionPatterns(ctx context.Context, dir string, exclusionPatterns ...string) (err error)
- func (fs *VFS) RemoveWithPrivileges(ctx context.Context, dir string) (err error)
- func (fs *VFS) Rm(dir string) error
- func (fs *VFS) Stat(name string) (os.FileInfo, error)
- func (fs *VFS) StatTimes(name string) (info FileTimeInfo, err error)
- func (fs *VFS) SubDirectories(directory string) ([]string, error)
- func (fs *VFS) SubDirectoriesWithContext(ctx context.Context, directory string) ([]string, error)
- func (fs *VFS) SubDirectoriesWithContextAndExclusionPatterns(ctx context.Context, directory string, exclusionPatterns ...string) (directories []string, err error)
- func (fs *VFS) Symlink(oldname string, newname string) (err error)
- func (fs *VFS) TempDir(dir string, prefix string) (name string, err error)
- func (fs *VFS) TempDirInTempDir(prefix string) (name string, err error)
- func (fs *VFS) TempDirectory() string
- func (fs *VFS) TempFile(dir string, prefix string) (f File, err error)
- func (fs *VFS) TempFileInTempDir(prefix string) (f File, err error)
- func (fs *VFS) Touch(path string) (err error)
- func (fs *VFS) TouchTempFile(dir string, prefix string) (filename string, err error)
- func (fs *VFS) TouchTempFileInTempDir(prefix string) (filename string, err error)
- func (fs *VFS) Unzip(source, destination string) ([]string, error)
- func (fs *VFS) UnzipWithContext(ctx context.Context, source string, destination string) (fileList []string, err error)
- func (fs *VFS) UnzipWithContextAndLimits(ctx context.Context, source string, destination string, limits ILimits) (fileList []string, err error)
- func (fs *VFS) Walk(root string, fn filepath.WalkFunc) error
- func (fs *VFS) WalkWithContext(ctx context.Context, root string, fn filepath.WalkFunc) error
- func (fs *VFS) WalkWithContextAndExclusionPatterns(ctx context.Context, root string, fn filepath.WalkFunc, ...) (err error)
- func (fs *VFS) WriteFile(filename string, data []byte, perm os.FileMode) error
- func (fs *VFS) WriteFileWithContext(ctx context.Context, filename string, data []byte, perm os.FileMode) (err error)
- func (fs *VFS) WriteToFile(ctx context.Context, filename string, reader io.Reader, perm os.FileMode) (written int64, err error)
- func (fs *VFS) Zip(source, destination string) error
- func (fs *VFS) ZipWithContext(ctx context.Context, source, destination string) (err error)
- func (fs *VFS) ZipWithContextAndLimits(ctx context.Context, source, destination string, limits ILimits) error
- func (fs *VFS) ZipWithContextAndLimitsAndExclusionPatterns(ctx context.Context, source string, destination string, limits ILimits, ...) (err error)
Constants ¶
const LockFilePrefix = "lockfile"
const (
UnsetFileHandle = ^uint64(0)
)
Variables ¶
var ( ErrLinkNotImplemented = fmt.Errorf("link not implemented: %w", commonerrors.ErrNotImplemented) ErrChownNotImplemented = fmt.Errorf("chown not implemented: %w", commonerrors.ErrNotImplemented) ErrPathNotExist = errors.New("readdirent: no such file or directory") )
var ( // ZipFileExtensions returns a list of commonly used extensions to describe zip archive files // This list was populated from [Wikipedia](https://en.wikipedia.org/wiki/List_of_archive_formats) ZipFileExtensions = []string{zipExt, zipxExt, sevenzipExt, sevenzipmacExt, gzipExt, targzExt, targz2Ext, xzExt, lzipExt, lzmaExt, rzipExt, packExt, compressExt, jarExt} // ZipMimeTypes returns a list of MIME types describing zip archive files. ZipMimeTypes = []string{zipMimeType, zipxMimeType, zipCompressedMimeType, jarMimeType, epubMimeType} )
var (
FileSystemTypes = []FilesystemType{StandardFS, InMemoryFS}
)
Functions ¶
func ConvertFileSystemError ¶ added in v1.38.0
ConvertFileSystemError converts file system error into common errors
func ConvertToIOFilesystem ¶ added in v1.39.0
ConvertToIOFilesystem converts a filesystem FS to a io/fs FS
func ConvertToOSFile ¶ added in v1.59.0
ConvertToOSFile converts a file to a `os` implementation of a file for certain use-cases where functions have not moved to using `fs.File`.
func CopyBetweenFS ¶
func CopyBetweenFSWithExclusionPatterns ¶ added in v1.20.0
func CopyBetweenFSWithExclusionRegexes ¶ added in v1.20.0
func CopyToDirectory ¶ added in v1.26.0
CopyToDirectory copies a src to a directory destDirectory which will be created as such if not present.
func CopyToDirectoryWithContext ¶ added in v1.26.0
CopyToDirectoryWithContext copies a src to a directory destDirectory which will be created as such if not present.
func CopyToFile ¶ added in v1.26.0
CopyToFile copies a file into another file
func CopyToFileWithContext ¶ added in v1.26.0
CopyToFileWithContext copies a file into another file
func CurrentDirectory ¶
func EndsWithPathSeparator ¶ added in v1.26.0
EndsWithPathSeparator states whether a path is ending with a path separator of not
func ExcludeAll ¶
ExcludeAll excludes files
func ExcludeFiles ¶ added in v1.20.0
func FilePathParentsOnFilesystem ¶ added in v1.73.0
FilePathParentsOnFilesystem is similar to FilepathParents but with the ability to be applied to a particular filesystem.
func FileTreeDepth ¶ added in v1.24.0
FileTreeDepth returns the depth of a file in a tree starting from root
func FilepathParents ¶ added in v1.73.0
FilepathParents returns a list of to the logical ancestors of the path and it's similar to `parents` in python's [pathlib](https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.parents)
func FilepathStem ¶ added in v1.13.0
FilepathStem returns the final path component, without its suffix. It's similar to `stem` in python's [pathlib](https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.stem)
func GenerateTestFileTree ¶ added in v1.25.1
func GenerateTestFileTree(t *testing.T, fs FS, testDir, basePath string, withLinks bool, fileModTime time.Time, fileAccessTime time.Time) []string
GenerateTestFileTree generates a file tree for testing purposes and returns a list of all the files and filesystem items created. testDir corresponds to the folder where the tree is createed basePath corresponds to the base path for sym links fileModTime, fileAccessTime are for specifying created files ch times
func GetFileSize ¶
func Glob ¶ added in v1.54.0
Glob returns the names of all files matching pattern with support for "doublestar" (aka globstar: **) patterns You can find the children with patterns such as: **/child*, grandparent/**/child?, **/parent/*, or even just ** by itself (which will return all files and directories recursively).
func IsDirectory ¶
func IsFileHandleUnset ¶
func IsPathExcluded ¶ added in v1.20.0
func IsPathExcludedFromPatterns ¶ added in v1.20.0
func IsPathNotExist ¶
func IsRegularFile ¶
func ListDirTree ¶
ListDirTree returns a list of files and directories recursively available under specified path
func ListDirTreeWithContextAndExclusionPatterns ¶ added in v1.20.0
func LsRecursive ¶ added in v1.72.1
func LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error)
LsRecursive lists all files recursively, including subdirectories
func LsRecursiveWithExclusionPatterns ¶ added in v1.72.1
func LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error)
LsRecursiveWithExclusionPatterns lists all files and directory (equivalent to ls) but exclude the ones matching the exclusion patterns.
func LsWithExclusionPatterns ¶ added in v1.20.0
func MoveBetweenFS ¶
func NewExclusionRegexList ¶ added in v1.20.0
func NewExtendedOsFs ¶
func NewOSPathExistRule ¶ added in v1.58.0
func NewOSPathExistRule(when bool) validation.Rule
NewOSPathExistRule returns a validation rule to use in configuration. The rule checks whether a string is a valid path for the Operating system's filesystem and actually exists. `when` describes whether the rule is enforced or not.
func NewOSPathValidationRule ¶ added in v1.58.0
func NewOSPathValidationRule(when bool) validation.Rule
NewOSPathValidationRule returns a validation rule to use in configuration. The rule checks whether a string is a valid path for the Operating System's filesystem. `when` describes whether the rule is enforced or not
func NewPathExistRule ¶ added in v1.58.0
func NewPathExistRule(filesystem FS, when bool) validation.Rule
NewPathExistRule returns a validation rule to use in configuration. The rule checks whether a string is a valid not empty path and actually exists. `when` describes whether the rule is enforced or not.
func NewPathValidationRule ¶ added in v1.58.0
func NewPathValidationRule(filesystem FS, when bool) validation.Rule
NewPathValidationRule returns a validation rule to use in configuration. The rule checks whether a string is a valid not empty path. `when` describes whether the rule is enforced or not
func NewZipFileSystem ¶ added in v1.42.0
func NewZipFileSystem(fs FS, source string, limits ILimits) (zipFs ICloseableFS, zipFile File, err error)
NewZipFileSystem returns a filesystem over the contents of a .zip file. Warning: After use of the filesystem, it is crucial to close the zip file (zipFile) which has been opened from source for the entirety of the filesystem use session. fs corresponds to the filesystem to use to find the zip file.
func NewZipFileSystemFromStandardFileSystem ¶ added in v1.42.0
func NewZipFileSystemFromStandardFileSystem(source string, limits ILimits) (ICloseableFS, File, error)
NewZipFileSystemFromStandardFileSystem returns a zip filesystem similar to NewZipFileSystem but assumes the zip file described by source can be found on the standard file system.
func PathSeparator ¶
func PathSeparator() rune
func ReadFileContent ¶ added in v1.38.0
ReadFileContent reads the file content.
func ReadFileWithLimits ¶ added in v1.15.0
func RemoveWithPrivileges ¶ added in v1.50.0
RemoveWithPrivileges removes any directory (equivalent to `sudo rm -rf`)
func SubDirectories ¶
func TempDirInTempDir ¶
func TempDirectory ¶
func TempDirectory() string
func TouchTempFile ¶ added in v1.54.0
TouchTempFile creates an empty file in `dir` and returns it filename
func TouchTempFileInTempDir ¶ added in v1.54.0
TouchTempFileInTempDir creates an empty file in temp directory and returns it filename
func UnzipWithContextAndLimits ¶ added in v1.24.0
func UnzipWithContextAndLimits(ctx context.Context, source string, destination string, limits ILimits) ([]string, error)
UnzipWithContextAndLimits unzips an source archive file into destination.
Types ¶
type ExtendedOsFs ¶
ExtendedOsFs extends afero.OsFs and is a Fs implementation that uses functions provided by the os package.
func (*ExtendedOsFs) ChownIfPossible ¶
func (c *ExtendedOsFs) ChownIfPossible(name string, uid int, gid int) error
func (*ExtendedOsFs) ForceRemoveIfPossible ¶ added in v1.50.0
func (c *ExtendedOsFs) ForceRemoveIfPossible(path string) error
func (*ExtendedOsFs) LinkIfPossible ¶
func (c *ExtendedOsFs) LinkIfPossible(oldname, newname string) (err error)
type FS ¶
type FS interface { // Open opens a file. The following is for being able to use `doublestar`. Use GenericOpen instead. Open(name string) (doublestar.File, error) // GenericOpen opens a file for reading. It opens the named file with specified flag (O_RDONLY etc.). // See os.Open() GenericOpen(name string) (File, error) // OpenFile opens a file using the given flags and the given mode. // OpenFile is the generalised open call // most users will use GenericOpen or Create instead. // See os.OpenFile OpenFile(name string, flag int, perm os.FileMode) (File, error) // CreateFile creates a file. CreateFile(name string) (File, error) // PathSeparator returns the path separator character. PathSeparator() rune Stat(name string) (os.FileInfo, error) Lstat(name string) (os.FileInfo, error) // StatTimes returns file time information. StatTimes(name string) (FileTimeInfo, error) // GetType returns the type of the file system. GetType() FilesystemType // CleanDir removes all the files in a directory (equivalent rm -rf .../*) CleanDir(dir string) (err error) // CleanDirWithContext removes all the files in a directory (equivalent rm -rf .../*) CleanDirWithContext(ctx context.Context, dir string) (err error) // CleanDirWithContextAndExclusionPatterns removes all the files in a directory (equivalent rm -rf .../*) unless they match some exclusion pattern. CleanDirWithContextAndExclusionPatterns(ctx context.Context, dir string, exclusionPatterns ...string) (err error) // Exists checks whether a file or folder exists Exists(path string) bool // Rm removes directory (equivalent to rm -rf) Rm(dir string) (err error) // RemoveWithContext removes directory (equivalent to rm -rf) RemoveWithContext(ctx context.Context, dir string) (err error) // RemoveWithContextAndExclusionPatterns removes directory (equivalent to rm -rf) unless they match some exclusion pattern. RemoveWithContextAndExclusionPatterns(ctx context.Context, dir string, exclusionPatterns ...string) (err error) // RemoveWithPrivileges removes a directory even if it is not owned by user (equivalent to sudo rm -rf). It expects the current user to be a superuser. RemoveWithPrivileges(ctx context.Context, dir string) (err error) // IsFile states whether it is a file or not IsFile(path string) (result bool, err error) // IsDir states whether it is a directory or not IsDir(path string) (result bool, err error) // IsLink states whether it is a link or not IsLink(path string) (result bool, err error) // IsEmpty checks whether a path is empty or not IsEmpty(name string) (empty bool, err error) // MkDir makes directory (equivalent to mkdir -p) MkDir(dir string) (err error) // MkDirAll makes directory (equivalent to mkdir -p) MkDirAll(dir string, perm os.FileMode) (err error) // ExcludeAll returns the list without the path matching the exclusion patterns. ExcludeAll(files []string, exclusionPatterns ...string) ([]string, error) // Glob returns the paths of all files matching pattern with support for "doublestar" (aka globstar: **) patterns. Glob(pattern string) ([]string, error) // FindAll finds all the files with extensions FindAll(dir string, extensions ...string) (files []string, err error) // Walk walks the file tree rooted at root, calling fn for each file or // directory in the tree, including root. See https://golang.org/pkg/path/filepath/#WalkDir Walk(root string, fn filepath.WalkFunc) error // WalkWithContext walks the file tree rooted at root, calling fn for each file or // directory in the tree, including root. See https://golang.org/pkg/path/filepath/#WalkDir WalkWithContext(ctx context.Context, root string, fn filepath.WalkFunc) error // WalkWithContextAndExclusionPatterns walks through the file tree rooted at root, calling fn for each file or // directory in the tree as long as they do not match an exclusion pattern. WalkWithContextAndExclusionPatterns(ctx context.Context, root string, fn filepath.WalkFunc, exclusionPatterns ...string) error // Ls lists all files and directory (equivalent to ls) Ls(dir string) (files []string, err error) // LsRecursive lists all files recursively, including subdirectories LsRecursive(ctx context.Context, dir string, includeDirectories bool) (files []string, err error) // LsWithExclusionPatterns lists all files and directory (equivalent to ls) but exclude the ones matching the exclusion patterns. LsWithExclusionPatterns(dir string, exclusionPatterns ...string) (files []string, err error) // LsRecursiveWithExclusionPatterns lists all files recursively, including subdirectories but exclude the ones matching the exclusion patterns. LsRecursiveWithExclusionPatterns(ctx context.Context, dir string, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) // LsRecursiveWithExclusionPatternsAndLimits lists all files recursively, including subdirectories but exclude the ones matching the exclusion patterns and add some limits for recursion LsRecursiveWithExclusionPatternsAndLimits(ctx context.Context, dir string, limit ILimits, includeDirectories bool, exclusionPatterns ...string) (files []string, err error) // LsFromOpenedDirectory lists all files and directories (equivalent to ls) LsFromOpenedDirectory(dir File) (files []string, err error) // LsRecursiveFromOpenedDirectory lists all files recursively LsRecursiveFromOpenedDirectory(ctx context.Context, dir File, includeDirectories bool) (files []string, err error) // Lls lists all files and directory (equivalent to ls -l) Lls(dir string) (files []os.FileInfo, err error) // LlsFromOpenedDirectory lists all files and directory (equivalent to ls -l) LlsFromOpenedDirectory(dir File) (files []os.FileInfo, err error) // CopyToFile copies a file to another file. CopyToFile(srcFile, destFile string) error // CopyToFileWithContext copies a file to another file similarly to CopyToFile. CopyToFileWithContext(ctx context.Context, srcFile, destFile string) error // CopyToDirectory copies a src to a directory destDirectory which will be created as such if not present. CopyToDirectory(src, destDirectory string) error // CopyToDirectoryWithContext copies a src to a directory similarly to CopyToDirectory. CopyToDirectoryWithContext(ctx context.Context, src, destDirectory string) error // Copy copies files and directory (equivalent to [POSIX cp -r](https://www.unix.com/man-page/posix/1P/cp/) or DOS `copy` or `shutil.copy()`/`shutil.copytree()` in [python](https://docs.python.org/3/library/shutil.html#shutil.copy)) // It should be noted that although the behaviour should match `cp -r` in most cases, there may be some corner cases in which the behaviour of Copy may differ slightly. // For instance, if the destination `dest` does not exist and the source is a file, then the destination will be a file unless the destination ends with a path separator and thus, the intention was to consider it as a folder. Copy(src string, dest string) (err error) // CopyWithContext copies files and directory similar to Copy. // Nonetheless, this function should be preferred over Copy as it is context aware, meaning it is possible to stop the copy if it is taking too long or if context is cancelled. CopyWithContext(ctx context.Context, src string, dest string) (err error) // CopyWithContextAndExclusionPatterns copies files and directory like CopyWithContext but ignores any file matching the exclusion pattern. CopyWithContextAndExclusionPatterns(ctx context.Context, src string, dest string, exclusionPatterns ...string) (err error) // Move moves a file (equivalent to mv) Move(src string, dest string) (err error) // MoveWithContext moves a file (equivalent to mv) MoveWithContext(ctx context.Context, src string, dest string) (err error) // TempDir creates a temp directory TempDir(dir string, prefix string) (name string, err error) // TempDirInTempDir creates a temp directory in temp directory. TempDirInTempDir(prefix string) (name string, err error) // TempFile creates a temp file TempFile(dir string, pattern string) (f File, err error) // TouchTempFile creates an empty temporary file in dir and returns its path. TouchTempFile(dir string, pattern string) (filename string, err error) // TempFileInTempDir creates a temp file in temp directory. TempFileInTempDir(pattern string) (f File, err error) // TouchTempFileInTempDir creates an empty temporary in temp directory and returns its path. TouchTempFileInTempDir(pattern string) (filename string, err error) // TempDirectory returns the temp directory. TempDirectory() string // CurrentDirectory returns current directory. CurrentDirectory() (string, error) // ReadFile reads a file and returns its content. ReadFile(filename string) ([]byte, error) // ReadFileWithContext reads a file but with control of a context and returns its content. ReadFileWithContext(ctx context.Context, filename string) ([]byte, error) // ReadFileWithLimits reads a file and returns its content. Nonetheless, it stops with EOF after FileSystemLimits are exceeded. ReadFileWithLimits(filename string, limits ILimits) ([]byte, error) // ReadFileWithContextAndLimits reads a file and returns its content. Limits and context are taken into account during the reading process. ReadFileWithContextAndLimits(ctx context.Context, filename string, limits ILimits) ([]byte, error) // ReadFileContent reads a file and returns its content. Limits and context are taken into account during the reading process. ReadFileContent(ctx context.Context, file File, limits ILimits) ([]byte, error) // WriteFile writes data to a file named by filename. // If the file does not exist, WriteFile creates it with permissions perm; // otherwise WriteFile truncates it before writing. WriteFile(filename string, data []byte, perm os.FileMode) error // WriteFileWithContext writes data to a file named by filename. // It works like WriteFile but is also controlled by a context. WriteFileWithContext(ctx context.Context, filename string, data []byte, perm os.FileMode) error // WriteToFile writes data from a reader to a file named by filename. // If the file does not exist, WriteToFile creates it with permissions perm; // otherwise WriteFile truncates it before writing. // It returns the number of bytes written. WriteToFile(ctx context.Context, filename string, reader io.Reader, perm os.FileMode) (written int64, err error) // GarbageCollect runs the Garbage collector on the filesystem (removes any file which has not been accessed for a certain duration) GarbageCollect(root string, durationSinceLastAccess time.Duration) error // GarbageCollectWithContext runs the Garbage collector on the filesystem (removes any file which has not been accessed for a certain duration) GarbageCollectWithContext(ctx context.Context, root string, durationSinceLastAccess time.Duration) error // Chmod changes the mode of the named file to mode. Chmod(name string, mode os.FileMode) error // ChmodRecursively changes the mode of anything within the `path`. ChmodRecursively(ctx context.Context, path string, mode os.FileMode) error // Chtimes changes the access and modification times of the named file Chtimes(name string, atime time.Time, mtime time.Time) error // Chown changes the numeric uid and gid of the named file. Chown(name string, uid, gid int) error // ChownRecursively changes recursively the numeric uid and gid of any sub items of `path`. ChownRecursively(ctx context.Context, path string, uid, gid int) error // ChangeOwnership changes the ownership of the named file. ChangeOwnership(name string, owner *user.User) error // ChangeOwnershipRecursively changes the ownership anything within the path. ChangeOwnershipRecursively(ctx context.Context, path string, owner *user.User) error // FetchOwners returns the numeric uid and gid of the named file FetchOwners(name string) (uid, gid int, err error) // FetchFileOwner returns the owner of the named file. FetchFileOwner(name string) (owner *user.User, err error) // Link creates newname as a hard link to the oldname file Link(oldname, newname string) error // Readlink returns the destination of the named symbolic link. Readlink(name string) (string, error) // Symlink creates newname as a symbolic link to oldname. Symlink(oldname string, newname string) error // DiskUsage determines Disk usage DiskUsage(name string) (DiskUsage, error) // GetFileSize gets file size GetFileSize(filename string) (int64, error) // SubDirectories returns a list of all subdirectories names. Any "hidden" directory (i.e. starting with `.`) is ignored. SubDirectories(directory string) ([]string, error) // SubDirectoriesWithContext returns a list of all subdirectories which are not hidden SubDirectoriesWithContext(ctx context.Context, directory string) ([]string, error) // SubDirectoriesWithContextAndExclusionPatterns returns a list of all subdirectories but ignores any file matching the exclusion pattern. // Note: all folders are returned whether they are hidden or not unless matching an exclusion pattern. SubDirectoriesWithContextAndExclusionPatterns(ctx context.Context, directory string, exclusionPatterns ...string) ([]string, error) // Touch is a command used to update the access date and/or modification date of a computer file or directory (equivalent to posix touch). Touch(path string) error // ListDirTree lists the content of directory recursively ListDirTree(dirPath string, list *[]string) error // ListDirTreeWithContext lists the content of directory recursively ListDirTreeWithContext(ctx context.Context, dirPath string, list *[]string) error // ListDirTreeWithContextAndExclusionPatterns lists the content of directory recursively but ignores any file matching the exclusion pattern. ListDirTreeWithContextAndExclusionPatterns(ctx context.Context, dirPath string, list *[]string, exclusionPatterns ...string) error // ConvertFilePath gets FS file path instead of real file path. In most cases, returned file path // should be identical however this may not be true for some particular file systems e.g. for base FS, file path // returned will have any base prefix removed. ConvertFilePath(name string) string // ConvertToRelativePath converts a list of paths to relative paths ConvertToRelativePath(rootPath string, paths ...string) ([]string, error) // ConvertToAbsolutePath converts a list of paths to relative paths ConvertToAbsolutePath(rootPath string, paths ...string) ([]string, error) // NewRemoteLockFile creates a lock file on a remote location (NFS) NewRemoteLockFile(id string, dirToLock string) ILock // Zip compresses a file tree (source) into a zip file (destination) Zip(source string, destination string) error // ZipWithContext compresses a file tree (source) into a zip file (destination) ZipWithContext(ctx context.Context, source string, destination string) error // ZipWithContextAndLimits compresses a file tree (source) into a zip file (destination) .Nonetheless, if FileSystemLimits are exceeded, an error will be returned and the process will be stopped. // It is however the responsibility of the caller to clean any partially created zipped archive if error occurs. ZipWithContextAndLimits(ctx context.Context, source string, destination string, limits ILimits) error // ZipWithContextAndLimitsAndExclusionPatterns compresses a file tree (source) into a zip file (destination) but ignores any file/folder matching an exclusion pattern. ZipWithContextAndLimitsAndExclusionPatterns(ctx context.Context, source string, destination string, limits ILimits, exclusionPatterns ...string) error // Unzip decompresses a source zip archive into the destination Unzip(source string, destination string) ([]string, error) // UnzipWithContext decompresses a source zip archive into the destination UnzipWithContext(ctx context.Context, source string, destination string) ([]string, error) // UnzipWithContextAndLimits decompresses a source zip archive into the destination. Nonetheless, if FileSystemLimits are exceeded, an error will be returned and the process will be stopped. // It is however the responsibility of the caller to clean any partially unzipped archive if error occurs. UnzipWithContextAndLimits(ctx context.Context, source string, destination string, limits ILimits) (fileList []string, err error) // FileHash calculates file hash FileHash(hashAlgo string, path string) (string, error) // FileHashWithContext calculates file hash FileHashWithContext(ctx context.Context, hashAlgo string, path string) (string, error) // IsZip states whether a file is a zip file or not. If the file does not exist, it will state whether the filename has a zip extension or not. IsZip(filepath string) bool // IsZipWithContext states whether a file is a zip file or not. Since the process can take some time (i.e type detection with sniffers such as http.DetectContentType), it is controlled by a context. IsZipWithContext(ctx context.Context, filepath string) (bool, error) }
FS defines all the methods a file system should provide. Note: When an API accepting exclusion patterns, it means its processing will not be applied on path matching an exclusion pattern An exclusion pattern correspond to a regex string following the syntax defined in the regexp(https://pkg.go.dev/regexp) module.
func ConvertFromIOFilesystem ¶ added in v1.39.0
ConvertFromIOFilesystem converts an io/fs FS into a FS
func GetGlobalFileSystem ¶
func GetGlobalFileSystem() FS
func NewFs ¶
func NewFs(fsType FilesystemType) FS
func NewInMemoryFileSystem ¶
func NewInMemoryFileSystem() FS
func NewStandardFileSystem ¶
func NewStandardFileSystem() FS
func NewVirtualFileSystem ¶
func NewVirtualFileSystem(vfs afero.Fs, fsType FilesystemType, pathConverter func(path string) string) FS
NewVirtualFileSystem returns a virtual filesystem similarly to NewCloseableVirtualFileSystem
type File ¶
func CreateFile ¶
func GenericOpen ¶
func TempFileInTempDir ¶
type FileTimeInfo ¶
type FileTimeInfo interface { ModTime() time.Time AccessTime() time.Time ChangeTime() time.Time BirthTime() time.Time HasChangeTime() bool HasBirthTime() bool HasAccessTime() bool }
func DetermineFileTimes ¶
func DetermineFileTimes(info os.FileInfo) (times FileTimeInfo, err error)
type FilesystemType ¶ added in v1.18.0
type FilesystemType int
const ( StandardFS FilesystemType = iota InMemoryFS Embed Custom ZipFS )
func GetType ¶
func GetType() FilesystemType
type IChowner ¶ added in v1.54.0
type IChowner interface { // ChownIfPossible will change the file ownership ChownIfPossible(name string, uid int, gid int) error }
IChowner is an Optional interface. It is only implemented by the filesystems saying so.
type ICloseableFS ¶ added in v1.42.0
ICloseableFS is a filesystem which utilises resources which must be closed when it is no longer used, such as open files. The close method is invoked to release resources that the object is holding.
func NewCloseableVirtualFileSystem ¶ added in v1.42.0
func NewCloseableVirtualFileSystem(vfs afero.Fs, fsType FilesystemType, resourceInUse io.Closer, resourceInUseDescription string, pathConverter func(path string) string) ICloseableFS
NewCloseableVirtualFileSystem returns a virtual filesystem which requires closing after use. It is a wrapper over afero.FS virtual filesystem and tends to define common filesystem utilities as the ones available in posix.
type IFileHash ¶
type IFileHash interface { Calculate(f File) (string, error) CalculateWithContext(ctx context.Context, f File) (string, error) CalculateFile(fs FS, path string) (string, error) CalculateFileWithContext(ctx context.Context, fs FS, path string) (string, error) GetType() string }
IFileHash defines a file hash. For reference. https://stackoverflow.com/questions/1761607/what-is-the-fastest-hash-algorithm-to-check-if-two-files-are-equal
func NewFileHash ¶
type IForceRemover ¶ added in v1.50.0
type IForceRemover interface { // ForceRemoveIfPossible will remove an item with escalated permissions if need be (equivalent to sudo rm -rf) ForceRemoveIfPossible(name string) error }
IForceRemover is an Optional interface. It is only implemented by the filesystems saying so.
type ILimits ¶ added in v1.15.0
type ILimits interface { config.IServiceConfiguration // Apply states whether the limit should be applied Apply() bool // GetMaxFileSize returns the maximum size in byte a file can have on a file system GetMaxFileSize() int64 // GetMaxTotalSize returns the maximum size in byte a location can have on a file system (whether it is a file or a folder) GetMaxTotalSize() uint64 // GetMaxFileCount returns the maximum files in byte a file can have on a file system GetMaxFileCount() int64 // GetMaxDepth returns the maximum depth of directory tree allowed (set to a negative number if disabled) GetMaxDepth() int64 // ApplyRecursively specifies whether recursive action should be applied or not e.g. expand zip within zips during unzipping ApplyRecursively() bool }
ILimits defines general FileSystemLimits for actions performed on the filesystem
func DefaultLimits ¶ added in v1.15.0
func DefaultLimits() ILimits
DefaultLimits defines default file system limits
func DefaultNonRecursiveZipLimits ¶ added in v1.24.0
func DefaultNonRecursiveZipLimits() ILimits
DefaultNonRecursiveZipLimits defines default file system limits for handling zips
func DefaultZipLimits ¶ added in v1.24.0
func DefaultZipLimits() ILimits
DefaultZipLimits defines default file system limits for handling zips
func NewLimits ¶ added in v1.15.0
func NewLimits(maxFileSize int64, maxTotalSize uint64, maxFileCount int64, maxDepth int64, recursive bool) ILimits
NewLimits defines file system FileSystemLimits.
func NoLimits ¶ added in v1.15.0
func NoLimits() ILimits
NoLimits defines no file system FileSystemLimits
func RecursiveZipLimits ¶ added in v1.24.0
RecursiveZipLimits defines file system limits for handling zips recursively
type ILinkReader ¶ added in v1.54.0
ILinkReader is an Optional interface. It is only implemented by the filesystems saying so.
type ILinker ¶ added in v1.54.0
type ILinker interface { // LinkIfPossible creates a hard link between oldname and new name. LinkIfPossible(oldname, newname string) error }
ILinker is an Optional interface. It is only implemented by the filesystems saying so.
type ILock ¶
type ILock interface { // Lock locks the lock. This call will wait (i.e. block) until the lock is available. Lock(ctx context.Context) error // LockWithTimeout tries to lock the lock until the timeout expires. If the timeout expires, this method will return commonerror.ErrTimeout. LockWithTimeout(ctx context.Context, timeout time.Duration) error // TryLock attempts to lock the lock instantly. This method will return commonerrors.ErrLocked immediately if the lock cannot be acquired straight away. TryLock(ctx context.Context) error // IsStale determines whether a lock is stale (the owner forgot to release it or is dead) or not. IsStale() bool // Unlock releases the lock. This takes precedence over any current lock. Unlock(ctx context.Context) error // ReleaseIfStale forces the lock to be released if it is considered as stale. ReleaseIfStale(ctx context.Context) error // MakeStale makes the lock stale. This is mostly for testing purposes. MakeStale(ctx context.Context) error }
ILock defines a generic lock using the file system. FIXME it should be noted that despite being possible to use the lock with an in-memory filesystem, it should be avoided at all cost. The implementation of the in-memory FS used (afero) has shown several thread safety issues (e.g. https://github.com/spf13/afero/issues/298) and therefore, should not be used for scenarios involving concurrency until it is fixed.
func NewGenericRemoteLockFile ¶
NewGenericRemoteLockFile creates a new remote lock using the file system.
type IStater ¶ added in v1.54.0
type IStater interface { // LstatIfPossible returns file information about an item. LstatIfPossible(string) (os.FileInfo, bool, error) }
IStater is an Optional interface. It is only implemented by the filesystems saying so.
type ISymLinker ¶ added in v1.54.0
ISymLinker is an Optional interface. It is only implemented by the filesystems saying so.
type Limits ¶ added in v1.15.0
type Limits struct { MaxFileSize int64 `mapstructure:"max_file_size"` MaxTotalSize uint64 `mapstructure:"max_total_size"` MaxFileCount int64 `mapstructure:"max_file_count"` MaxDepth int64 `mapstructure:"max_depth"` Recursive bool `mapstructure:"recursive"` }
Limits defines file system limits
func (*Limits) ApplyRecursively ¶ added in v1.24.0
func (*Limits) GetMaxDepth ¶ added in v1.24.0
func (*Limits) GetMaxFileCount ¶ added in v1.19.0
func (*Limits) GetMaxFileSize ¶ added in v1.15.0
func (*Limits) GetMaxTotalSize ¶ added in v1.15.0
type RemoteLockFile ¶
type RemoteLockFile struct {
// contains filtered or unexported fields
}
RemoteLockFile describes a distributed lock using only the file system. The locking mechanism is performed using directories and the atomic function `mkdir`. A major issue of distributed locks is the presence of stale locks due to many factors such as the loss of the holder of a lock for various reasons. To mitigate this problem, a "heart bit" file is modified regularly by the lock holder in order to specify the holder is still alive and the lock still valid.
func (*RemoteLockFile) IsStale ¶
func (l *RemoteLockFile) IsStale() bool
IsStale checks whether the lock is stale (i.e. no heart beat detected) or not.
func (*RemoteLockFile) Lock ¶
func (l *RemoteLockFile) Lock(ctx context.Context) error
Lock locks the lock. This call will block until the lock is available.
func (*RemoteLockFile) LockWithTimeout ¶
LockWithTimeout tries to lock the lock until the timeout expires
func (*RemoteLockFile) MakeStale ¶
func (l *RemoteLockFile) MakeStale(ctx context.Context) error
MakeStale is mostly useful for testing purposes and tries to mock locks going stale.
func (*RemoteLockFile) ReleaseIfStale ¶
func (l *RemoteLockFile) ReleaseIfStale(ctx context.Context) error
type UsageStat ¶
type UsageStat struct { Total uint64 Free uint64 Used uint64 UsedPercent float64 InodesTotal uint64 InodesUsed uint64 InodesFree uint64 InodesUsedPercent float64 }
func (*UsageStat) GetInodesFree ¶
func (*UsageStat) GetInodesTotal ¶
func (*UsageStat) GetInodesUsed ¶
func (*UsageStat) GetInodesUsedPercent ¶
func (*UsageStat) GetUsedPercent ¶
type VFS ¶
type VFS struct {
// contains filtered or unexported fields
}
func (*VFS) ChangeOwnership ¶ added in v1.43.0
func (*VFS) ChangeOwnershipRecursively ¶ added in v1.54.0
func (*VFS) ChmodRecursively ¶ added in v1.54.0
func (*VFS) ChownRecursively ¶ added in v1.54.0
func (*VFS) CleanDirWithContext ¶ added in v1.15.0
func (*VFS) CleanDirWithContextAndExclusionPatterns ¶ added in v1.20.0
func (*VFS) ConvertFilePath ¶
func (*VFS) ConvertToAbsolutePath ¶
func (*VFS) ConvertToRelativePath ¶
func (*VFS) CopyToDirectory ¶ added in v1.26.0
func (*VFS) CopyToDirectoryWithContext ¶ added in v1.26.0
func (*VFS) CopyToFileWithContext ¶ added in v1.26.0
func (*VFS) CopyWithContext ¶ added in v1.15.0
func (*VFS) CopyWithContextAndExclusionPatterns ¶ added in v1.20.0
func (*VFS) CurrentDirectory ¶
func (*VFS) ExcludeAll ¶
func (*VFS) FetchFileOwner ¶ added in v1.43.0
func (*VFS) FetchOwners ¶ added in v1.18.0
func (*VFS) FileHashWithContext ¶ added in v1.28.0
func (*VFS) GarbageCollect ¶
func (*VFS) GarbageCollectWithContext ¶ added in v1.15.0
func (*VFS) GetType ¶
func (fs *VFS) GetType() FilesystemType