filesystem

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2022 License: MIT Imports: 13 Imported by: 7

Documentation

Index

Constants

View Source
const (
	FeedbackWriteBegin = WriteFeedback(iota)
	FeedbackWriteSucceded
	FeedbackWriteFailed
	FeedbackWriteSkipped

	FeedbackBackupBegin
	FeedbackBackupSucceded
	FeedbackBackupFailed
	FeedbackBackupRestoreFailed
)

Variables

View Source
var (
	ErrFileNotDir        = errors.New("a file is located at the expected directory location")
	ErrDirNotFile        = errors.New("a directory is located at the expected file location")
	ErrFileDoesNotExist  = os.ErrNotExist
	ErrDirDoesNotExist   = errors.New("directory does not exist")
	ErrDirIsNotEmpty     = errors.New("directory is not empty")
	ErrPathDoesNotExist  = errors.New("path does not exist")
	ErrFileExists        = os.ErrExist
	ErrDirExists         = errors.New("directory already exists")
	ErrPathIsNotAbsolute = errors.New("path is not absolute")
	ErrPathIsAbsolute    = errors.New("path is absolute")
)

Error Codes

Functions

func ByteSizeStr

func ByteSizeStr(sz uint64) string

func CheckDirExists

func CheckDirExists(path string) (bool, error)

func CheckFileExists

func CheckFileExists(path string) (bool, error)

func DirExists

func DirExists(path string) bool

DirExists returns true if a directory exists at the specified location. If the path points to a file, this function returns false.

func FileContentMatch added in v0.6.0

func FileContentMatch(fn string, data []byte) (bool, error)

FileContentMatch checks if the file has content that matches the specified data

func FileExists

func FileExists(path string) bool

FileExists returns true if a file exists at the specified location. If the path points to a directory, this function returns false.

func JoinPathList

func JoinPathList(paths ...string) string

JoinPathList joins multiple paths into a string with OS-specific path separator. This is an opposite of the GOLANG's filepath.SplitList() function.

func NormalizePathsToSlash

func NormalizePathsToSlash(paths []string) []string

NormalizePathsToSlash normalizes a list of file paths: - removes empty paths - converts separators to slashes - removes duplicates - sorts lexicographically

func ReadJSONFile added in v0.6.0

func ReadJSONFile(fn string, v interface{}) error

ReadJSONFile is a version of json.Unmarshal that reads content from a file and ammends returned errors with location information (file:col:row)

func ResolvesToSameFile

func ResolvesToSameFile(pathA, pathB string) bool

ResolvesToSameFile returns true if the two paths resolve to the same actual file. Follows symlinks.

func SearchDir

func SearchDir(dir dirname, accept func(os.FileInfo) bool) []filename

SearchDir returns the list of paths within the specified directory that pass through the 'accept' callback. This is a non-recursive search.

func SearchFilesAndSymlinks(dirs []string, accept func(os.FileInfo) bool) map[filename][]symlink

SearchFilesAndSymlinks scans the provided set of directories and returns absolute filenames that pass through a functional 'accept' filter.

While searching, symlinks are resolved. For symlinks, the 'accept' is called twice: first on a symlink itself, then on its target.

Returns a map of real absolute file paths and symlinks pointing to those files.

func ValidateDirExists

func ValidateDirExists(path string) error

func ValidateEmptyDirExists

func ValidateEmptyDirExists(path string) error

func ValidateFileExists

func ValidateFileExists(path string) error

func ValidateNoDirExists added in v0.5.0

func ValidateNoDirExists(path string) error

func ValidateNoFileExists added in v0.5.0

func ValidateNoFileExists(path string) error

func ValidateNoPathExists added in v0.5.0

func ValidateNoPathExists(path string) error

func ValidatePathExists added in v0.5.0

func ValidatePathExists(path string) error

func ValidatePathIsAbsolute added in v0.5.0

func ValidatePathIsAbsolute(path string) error

func ValidatePathIsNotAbsolute added in v0.5.0

func ValidatePathIsNotAbsolute(path string) error

func WriteFile added in v0.6.0

func WriteFile(fn string, buf []byte, opts *WriteOptions) error

WriteFile writes data to the named file with configurable behavior and feedback

func WriteFileIfChanged deprecated

func WriteFileIfChanged(fn string, data []byte) (err error)

WriteFileIfChanged writes data to a file.

  • Does not overwrite if the file already has the specified content
  • Uses 0666 permission if overwriting is neccessary

Deprecated: Use WriteFile with WriteOptions instead

Types

type BackupNameGenerator added in v0.6.0

type BackupNameGenerator = func(original_fn string, n int) string

func BackupNameNumeric added in v0.6.0

func BackupNameNumeric(suffix string, max_attempts int) BackupNameGenerator

BackupNameNumeric produces a backup name generator that injects a numbered suffix into the original filename

  • first backup: file<suffix>.ext
  • n-th backup: file<suffix>_n.ext
  • stops after max_attempts if generated filenames are already claimed by existing files

func BackupNameTimestamp added in v0.6.0

func BackupNameTimestamp(suffix string, timestamp_format string, max_attempts int) BackupNameGenerator

BackupNameTimestamp produces a backup name generator that injects a timestamp suffix into the original filename

  • naming pattern: file<suffix>timestamp.ext
  • uses time.Now().Format(timestamp_format)
  • stops after max_attempts if generated filenames are already claimed by existing files

type WriteFeedback added in v0.6.0

type WriteFeedback int

type WriteFeedbackProc added in v0.6.0

type WriteFeedbackProc = func(fb WriteFeedback, fn string)

type WriteOptions added in v0.6.0

type WriteOptions struct {
	Perm                     os.FileMode         // file writing permissions, defaults to 0666 if unspecidied (perm == 0)
	OverwriteMatchingContent bool                // backup and overwrite, even if content matches
	Backup                   BackupNameGenerator // backup filename generator, no backup by default
	OnFeedback               WriteFeedbackProc   // use this if logging or user feedback is required
}

WriteOptions provides detailed configuration

Jump to

Keyboard shortcuts

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