filesystem

package
v1.18.1 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2022 License: Apache-2.0 Imports: 29 Imported by: 3

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

  • 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

  • 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

Distributed lock using lock files https://fileinfo.com/extension/lock

Index

Constants

View Source
const LockFilePrefix = "lockfile"
View Source
const (
	UnsetFileHandle = ^uint64(0)
)

Variables

View Source
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")
)
View Source
var (
	FileSystemTypes = []FilesystemType{StandardFS, InMemoryFS}
)

Functions

func CleanDir

func CleanDir(dir string) (err error)

func ConvertFileSytemError

func ConvertFileSytemError(err error) error

Converts file system error into common errors

func Copy

func Copy(src string, dest string) (err error)

func CopyBetweenFS

func CopyBetweenFS(ctx context.Context, srcFs FS, src string, destFs FS, dest string) (err error)

func CurrentDirectory

func CurrentDirectory() (string, error)

func ExcludeAll

func ExcludeAll(files []string, exclusionPatterns ...string) ([]string, error)

ExcludeAll excludes files

func Exists

func Exists(path string) bool

Checks if a file or folder exists

func FilepathStem added in v1.13.0

func FilepathStem(fp string) string

FilepathStem returns the final path component, without its suffix.

func FindAll

func FindAll(dir string, extensions ...string) (files []string, err error)

FindAll finds all the files with extensions

func GetFileSize

func GetFileSize(name string) (size int64, err error)

func IdentityPathConverterFunc

func IdentityPathConverterFunc(path string) string

func IsDir

func IsDir(path string) (result bool, err error)

IsDir states whether it is a directory or not

func IsDirectory

func IsDirectory(fi os.FileInfo) bool

func IsEmpty

func IsEmpty(name string) (empty bool, err error)

IsEmpty checks whether a path is empty or not

func IsFile

func IsFile(path string) (result bool, err error)

States whether it is a file or not

func IsFileHandleUnset

func IsFileHandleUnset(fh uintptr) bool

func IsPathNotExist

func IsPathNotExist(err error) bool

func IsRegularFile

func IsRegularFile(fi os.FileInfo) bool
func IsSymLink(fi os.FileInfo) bool

func ListDirTree

func ListDirTree(dirPath string, list *[]string) error

ListDirTree returns a list of files and directories recursively available under specified path

func Ls

func Ls(dir string) (files []string, err error)

func Lstat

func Lstat(name string) (fileInfo os.FileInfo, err error)

func MkDir

func MkDir(dir string) (err error)

MkDir makes directory (equivalent to mkdir -p)

func Move

func Move(src string, dest string) error

Move moves a file (equivalent to mv)

func MoveBetweenFS

func MoveBetweenFS(ctx context.Context, srcFs FS, src string, destFs FS, dest string) (err error)

func NewExtendedOsFs

func NewExtendedOsFs() afero.Fs

func PathSeparator

func PathSeparator() rune

func ReadFile

func ReadFile(name string) ([]byte, error)

func ReadFileWithLimits added in v1.15.0

func ReadFileWithLimits(filename string, limits ILimits) ([]byte, error)

func Rm

func Rm(dir string) (err error)

func Stat

func Stat(name string) (os.FileInfo, error)

func SubDirectories

func SubDirectories(directory string) ([]string, error)

func TempDir

func TempDir(dir string, prefix string) (name string, err error)

func TempDirInTempDir

func TempDirInTempDir(prefix string) (name string, err error)

func TempDirectory

func TempDirectory() string

func Unzip

func Unzip(source, destination string) ([]string, error)

func Zip

func Zip(source string, destination string) error

Types

type Chowner

type Chowner interface {
	ChownIfPossible(string, int, int) error
}

Chowner is an Optional interface. It is only implemented by the filesystems saying so.

type DiskUsage

type DiskUsage interface {
	GetTotal() uint64
	GetFree() uint64
	GetUsed() uint64
	GetUsedPercent() float64
	GetInodesTotal() uint64
	GetInodesUsed() uint64
	GetInodesFree() uint64
	GetInodesUsedPercent() float64
}

type ExtendedOsFs

type ExtendedOsFs struct {
	afero.OsFs
}

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) 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
	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 generalized 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)
	// Exists checks whether a file or folder exists
	Exists(path string) bool
	// Rm removes directory (equivalent to rm -r)
	Rm(dir string) (err error)
	// RemoveWithContext removes directory (equivalent to rm -r)
	RemoveWithContext(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)
	// 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
	// Ls lists all files and directory (equivalent to ls)
	Ls(dir string) (files []string, err error)
	// LsFromOpenedDirectory lists all files and directory (equivalent to ls)
	LsFromOpenedDirectory(dir File) (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)
	// Copy copies files and directory (equivalent to cp -r)
	Copy(src string, dest string) (err error)
	// CopyWithContext copies files and directory (equivalent to cp -r)
	CopyWithContext(ctx context.Context, src string, dest 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)
	// TempFileInTempDir creates a temp file in temp directory.
	TempFileInTempDir(pattern string) (f File, err error)
	// TempDirectory returns the temp directory.
	TempDirectory() string
	// CurrentDirectory returns current directory.
	CurrentDirectory() (string, error)
	// ReadFile reads a file and return its content.
	ReadFile(filename string) ([]byte, error)
	// ReadFileWithLimits reads a file and return its content. Nonetheless, it stops with EOF after FileSystemLimits are exceeded.
	ReadFileWithLimits(filename string, 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
	// 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
	// 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
	// FetchOwners returns the numeric uid and gid of the named file
	FetchOwners(name string) (uid, gid int, 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 (which are not hidden) names
	SubDirectories(directory string) ([]string, error)
	// SubDirectoriesWithContext returns a list of all subdirectories (which are not hidden)
	SubDirectoriesWithContext(ctx context.Context, directory string) ([]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
	// 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
	// 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)
}

FS defines all the methods a file system should provide.

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

type File

type File interface {
	afero.File
	Fd() uintptr
}

func CreateFile

func CreateFile(name string) (File, error)

func GenericOpen

func GenericOpen(name string) (File, error)

func OpenFile added in v1.5.0

func OpenFile(name string, flag int, perm os.FileMode) (File, error)

func TempFile

func TempFile(dir string, pattern string) (f File, err error)

func TempFileInTempDir

func TempFileInTempDir(pattern string) (f File, err error)

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
)

func GetType

func GetType() FilesystemType

type IFileHash

type IFileHash interface {
	Calculate(f File) (string, error)
	CalculateFile(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

func NewFileHash(hashType string) (IFileHash, error)

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
}

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 FileSystemLimits

func NewLimits added in v1.15.0

func NewLimits(maxFileSize int64, maxTotalSize uint64) ILimits

NewLimits defines file system FileSystemLimits.

func NoLimits added in v1.15.0

func NoLimits() ILimits

NoLimits defines no file system FileSystemLimits

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

func NewGenericRemoteLockFile(fs *VFS, lockID string, dirPath string, overrideStaleLock bool) ILock

NewGenericRemoteLockFile creates a new remote lock using the file system.

func NewRemoteLockFile

func NewRemoteLockFile(fs *VFS, lockID string, dirPath string) ILock

NewRemoteLockFile creates a new remote lock using the file system. lockID Id for the lock. dirPath path where the lock should be applied to.

type Limits added in v1.15.0

type Limits struct {
	MaxFileSize  int64  `mapstructure:"max_file_size"`
	MaxTotalSize uint64 `mapstructure:"max_total_size"`
}

Limits defines file system limits

func (*Limits) Apply added in v1.15.0

func (l *Limits) Apply() bool

func (*Limits) GetMaxFileSize added in v1.15.0

func (l *Limits) GetMaxFileSize() int64

func (*Limits) GetMaxTotalSize added in v1.15.0

func (l *Limits) GetMaxTotalSize() uint64

func (*Limits) Validate added in v1.15.0

func (l *Limits) Validate() error

type Linker

type Linker interface {
	LinkIfPossible(string, string) error
}

Linker is an Optional interface. It is only implemented by the filesystems saying so.

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

func (l *RemoteLockFile) LockWithTimeout(ctx context.Context, timeout time.Duration) error

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

func (*RemoteLockFile) TryLock

func (l *RemoteLockFile) TryLock(ctx context.Context) (err error)

TryLock attempts to lock the lock straight away.

func (*RemoteLockFile) Unlock

func (l *RemoteLockFile) Unlock(ctx context.Context) error

Unlock unlocks the lock

type UsageStat

type UsageStat struct {
	Total             uint64
	Free              uint64
	Used              uint64
	UsedPercent       float64
	InodesTotal       uint64
	InodesUsed        uint64
	InodesFree        uint64
	InodesUsedPercent float64
}

func (*UsageStat) GetFree

func (d *UsageStat) GetFree() uint64

func (*UsageStat) GetInodesFree

func (d *UsageStat) GetInodesFree() uint64

func (*UsageStat) GetInodesTotal

func (d *UsageStat) GetInodesTotal() uint64

func (*UsageStat) GetInodesUsed

func (d *UsageStat) GetInodesUsed() uint64

func (*UsageStat) GetInodesUsedPercent

func (d *UsageStat) GetInodesUsedPercent() float64

func (*UsageStat) GetTotal

func (d *UsageStat) GetTotal() uint64

func (*UsageStat) GetUsed

func (d *UsageStat) GetUsed() uint64

func (*UsageStat) GetUsedPercent

func (d *UsageStat) GetUsedPercent() float64

type VFS

type VFS struct {
	// contains filtered or unexported fields
}

func (*VFS) Chmod

func (fs *VFS) Chmod(name string, mode os.FileMode) error

func (*VFS) Chown

func (fs *VFS) Chown(name string, uid, gid int) (err error)

func (*VFS) Chtimes

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

func (*VFS) CleanDir

func (fs *VFS) CleanDir(dir string) error

func (*VFS) CleanDirWithContext added in v1.15.0

func (fs *VFS) CleanDirWithContext(ctx context.Context, dir string) (err error)

func (*VFS) ConvertFilePath

func (fs *VFS) ConvertFilePath(name string) string

func (*VFS) ConvertToAbsolutePath

func (fs *VFS) ConvertToAbsolutePath(rootPath string, paths ...string) ([]string, error)

func (*VFS) ConvertToRelativePath

func (fs *VFS) ConvertToRelativePath(rootPath string, paths ...string) ([]string, error)

func (*VFS) Copy

func (fs *VFS) Copy(src string, dest string) (err error)

func (*VFS) CopyWithContext added in v1.15.0

func (fs *VFS) CopyWithContext(ctx context.Context, src string, dest string) (err error)

func (*VFS) CreateFile

func (fs *VFS) CreateFile(name string) (File, error)

func (*VFS) CurrentDirectory

func (fs *VFS) CurrentDirectory() (string, error)

func (*VFS) DiskUsage

func (fs *VFS) DiskUsage(name string) (usage DiskUsage, err error)

func (*VFS) ExcludeAll

func (fs *VFS) ExcludeAll(files []string, exclusionPatterns ...string) ([]string, error)

func (*VFS) Exists

func (fs *VFS) Exists(path string) bool

func (*VFS) FetchOwners added in v1.18.0

func (fs *VFS) FetchOwners(name string) (uid, gid int, err error)

func (*VFS) FileHash

func (fs *VFS) FileHash(hashAlgo string, path string) (hash string, err error)

func (*VFS) FindAll

func (fs *VFS) FindAll(dir string, extensions ...string) (files []string, err error)

func (*VFS) GarbageCollect

func (fs *VFS) GarbageCollect(root string, durationSinceLastAccess time.Duration) error

func (*VFS) GarbageCollectWithContext added in v1.15.0

func (fs *VFS) GarbageCollectWithContext(ctx context.Context, root string, durationSinceLastAccess time.Duration) error

func (*VFS) GenericOpen

func (fs *VFS) GenericOpen(name string) (File, error)

func (*VFS) GetFileSize

func (fs *VFS) GetFileSize(name string) (size int64, err error)

func (*VFS) GetType

func (fs *VFS) GetType() FilesystemType

func (*VFS) IsDir

func (fs *VFS) IsDir(path string) (result bool, err error)

func (*VFS) IsEmpty

func (fs *VFS) IsEmpty(name string) (empty bool, err error)

func (*VFS) IsFile

func (fs *VFS) IsFile(path string) (result bool, err error)
func (fs *VFS) IsLink(path string) (result bool, err error)
func (fs *VFS) Link(oldname, newname string) (err error)

func (*VFS) ListDirTree

func (fs *VFS) ListDirTree(dirPath string, list *[]string) error

func (*VFS) ListDirTreeWithContext added in v1.15.0

func (fs *VFS) ListDirTreeWithContext(ctx context.Context, dirPath string, list *[]string) (err error)

func (*VFS) Lls

func (fs *VFS) Lls(dir string) (files []os.FileInfo, err error)

func (*VFS) LlsFromOpenedDirectory

func (fs *VFS) LlsFromOpenedDirectory(dir File) ([]os.FileInfo, error)

func (*VFS) Ls

func (fs *VFS) Ls(dir string) (names []string, err error)

func (*VFS) LsFromOpenedDirectory

func (fs *VFS) LsFromOpenedDirectory(dir File) ([]string, error)

func (*VFS) Lstat

func (fs *VFS) Lstat(name string) (fileInfo os.FileInfo, err error)

func (*VFS) MkDir

func (fs *VFS) MkDir(dir string) (err error)

func (*VFS) MkDirAll

func (fs *VFS) MkDirAll(dir string, perm os.FileMode) (err error)

func (*VFS) Move

func (fs *VFS) Move(src string, dest string) error

func (*VFS) MoveWithContext added in v1.15.0

func (fs *VFS) MoveWithContext(ctx context.Context, src string, dest string) (err error)

func (*VFS) NewRemoteLockFile

func (fs *VFS) NewRemoteLockFile(id string, dirToLock string) ILock

func (*VFS) Open

func (fs *VFS) Open(name string) (doublestar.File, error)

func (*VFS) OpenFile

func (fs *VFS) OpenFile(name string, flag int, perm os.FileMode) (File, error)

func (*VFS) PathSeparator

func (fs *VFS) PathSeparator() rune

func (*VFS) ReadFile

func (fs *VFS) ReadFile(filename string) (content []byte, err error)

func (*VFS) ReadFileWithLimits added in v1.15.0

func (fs *VFS) ReadFileWithLimits(filename string, limits ILimits) ([]byte, error)
func (fs *VFS) Readlink(name string) (value string, err error)

func (*VFS) RemoveWithContext added in v1.15.0

func (fs *VFS) RemoveWithContext(ctx context.Context, dir string) (err error)

func (*VFS) Rm

func (fs *VFS) Rm(dir string) error

func (*VFS) Stat

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

func (*VFS) StatTimes

func (fs *VFS) StatTimes(name string) (info FileTimeInfo, err error)

func (*VFS) SubDirectories

func (fs *VFS) SubDirectories(directory string) ([]string, error)

func (*VFS) SubDirectoriesWithContext added in v1.15.0

func (fs *VFS) SubDirectoriesWithContext(ctx context.Context, directory string) (directories []string, err error)
func (fs *VFS) Symlink(oldname string, newname string) (err error)

func (*VFS) TempDir

func (fs *VFS) TempDir(dir string, prefix string) (name string, err error)

func (*VFS) TempDirInTempDir

func (fs *VFS) TempDirInTempDir(prefix string) (name string, err error)

func (*VFS) TempDirectory

func (fs *VFS) TempDirectory() string

func (*VFS) TempFile

func (fs *VFS) TempFile(dir string, prefix string) (f File, err error)

func (*VFS) TempFileInTempDir

func (fs *VFS) TempFileInTempDir(prefix string) (f File, err error)

func (*VFS) Unzip

func (fs *VFS) Unzip(source, destination string) ([]string, error)

func (*VFS) UnzipWithContext added in v1.15.0

func (fs *VFS) UnzipWithContext(ctx context.Context, source string, destination string) (fileList []string, err error)

func (*VFS) UnzipWithContextAndLimits added in v1.15.0

func (fs *VFS) UnzipWithContextAndLimits(ctx context.Context, source string, destination string, limits ILimits) (fileList []string, err error)

func (*VFS) Walk

func (fs *VFS) Walk(root string, fn filepath.WalkFunc) error

Walk walks https://golang.org/pkg/path/filepath/#WalkDir

func (*VFS) WalkWithContext added in v1.15.0

func (fs *VFS) WalkWithContext(ctx context.Context, root string, fn filepath.WalkFunc) error

func (*VFS) WriteFile

func (fs *VFS) WriteFile(filename string, data []byte, perm os.FileMode) (err error)

func (*VFS) Zip

func (fs *VFS) Zip(source, destination string) error

func (*VFS) ZipWithContext added in v1.15.0

func (fs *VFS) ZipWithContext(ctx context.Context, source, destination string) (err error)

func (*VFS) ZipWithContextAndLimits added in v1.15.0

func (fs *VFS) ZipWithContextAndLimits(ctx context.Context, source, destination string, limits ILimits) (err error)

Jump to

Keyboard shortcuts

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