rwfs

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package rwfs implements a read-write filesystem, extending fs.FS

Index

Constants

View Source
const (
	// exactly one of these must be used
	O_RDONLY = os.O_RDONLY // read-only
	O_WRONLY = os.O_WRONLY // write-only
	O_RDWR   = os.O_RDWR   // read-write
	// remaining values may be or'ed
	O_APPEND = os.O_APPEND // append when writing
	O_CREATE = os.O_CREATE // create if missing
	O_EXCL   = os.O_EXCL   // file must not exist, used with O_CREATE
	O_SYNC   = os.O_SYNC   // synchronous I/O
	O_TRUNC  = os.O_TRUNC  // truncate on open
)

Variables

This section is empty.

Functions

func Copy

func Copy(srcFS fs.FS, srcName string, destFS RWFS, destName string) error

Copy will copy a file to a new name, and even a different rwfs

func CopyRecursive

func CopyRecursive(srcFS fs.FS, srcName string, destFS RWFS, destName string) error

CopyRecursive will recursively copy a directory tree to the destination

func MkdirAll

func MkdirAll(rwfs RWFS, name string, perm fs.FileMode) error

MkdirAll creates a directory, including all parent directories

func ReadFile

func ReadFile(rfs fs.FS, name string) ([]byte, error)

ReadFile returns the file contents

func Stat

func Stat(rfs fs.FS, name string) (fs.FileInfo, error)

Stat returns the FileInfo for a specified file

func WriteFile

func WriteFile(wfs WriteFS, name string, data []byte, perm fs.FileMode) error

WriteFile replaces or creates a file with the specified contents

Types

type DirEntry

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

func NewDE

func NewDE(name string, mode fs.FileMode, fi *FileInfo) *DirEntry

func (*DirEntry) Info

func (de *DirEntry) Info() (fs.FileInfo, error)

func (*DirEntry) IsDir

func (de *DirEntry) IsDir() bool

IsDir abbreviation for Mode().IsDir()

func (*DirEntry) Name

func (de *DirEntry) Name() string

Name is base name of the file

func (*DirEntry) Type

func (de *DirEntry) Type() fs.FileMode

Type is file mode bits

type FileInfo

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

func NewFI

func NewFI(name string, size int64, mod time.Time, mode fs.FileMode) *FileInfo

func (*FileInfo) IsDir

func (fi *FileInfo) IsDir() bool

IsDir abbreviation for Mode().IsDir()

func (*FileInfo) ModTime

func (fi *FileInfo) ModTime() time.Time

ModTime is modification time

func (*FileInfo) Mode

func (fi *FileInfo) Mode() fs.FileMode

Mode is file mode bits

func (*FileInfo) Name

func (fi *FileInfo) Name() string

Name is base name of the file

func (*FileInfo) Size

func (fi *FileInfo) Size() int64

Size is length in bytes for regular files; system-dependent for others

func (*FileInfo) Sys

func (fi *FileInfo) Sys() interface{}

Sys underlying data source (can return nil)

type MemChild

type MemChild interface{}

type MemDir

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

type MemDirFP

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

func (*MemDirFP) Close

func (mdp *MemDirFP) Close() error

func (*MemDirFP) Read

func (mdp *MemDirFP) Read(b []byte) (int, error)

func (*MemDirFP) ReadDir

func (mdp *MemDirFP) ReadDir(n int) ([]fs.DirEntry, error)

func (*MemDirFP) Stat

func (mdp *MemDirFP) Stat() (fs.FileInfo, error)

func (*MemDirFP) Write

func (mdp *MemDirFP) Write(b []byte) (n int, err error)

type MemFS

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

func MemNew

func MemNew() *MemFS

func (*MemFS) Create

func (o *MemFS) Create(name string) (WFile, error)

func (*MemFS) Mkdir

func (o *MemFS) Mkdir(name string, perm fs.FileMode) error

func (*MemFS) Open

func (o *MemFS) Open(name string) (fs.File, error)

func (*MemFS) OpenFile

func (o *MemFS) OpenFile(name string, flags int, perm fs.FileMode) (RWFile, error)

func (*MemFS) Remove

func (o *MemFS) Remove(name string) error

func (*MemFS) Rename added in v0.4.3

func (o *MemFS) Rename(oldName, newName string) error

Rename moves a file or directory to a new name

func (*MemFS) Stat added in v0.5.0

func (o *MemFS) Stat(name string) (fs.FileInfo, error)

func (*MemFS) Sub

func (o *MemFS) Sub(name string) (*MemFS, error)

type MemFile

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

type MemFileFP

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

func (*MemFileFP) Close

func (mfp *MemFileFP) Close() error

func (*MemFileFP) Read

func (mfp *MemFileFP) Read(b []byte) (int, error)

func (*MemFileFP) Seek added in v0.4.6

func (mfp *MemFileFP) Seek(offset int64, whence int) (int64, error)

func (*MemFileFP) Stat

func (mfp *MemFileFP) Stat() (fs.FileInfo, error)

func (*MemFileFP) Write

func (mfp *MemFileFP) Write(b []byte) (n int, err error)

type OSFS

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

func OSNew

func OSNew(base string) *OSFS

func (*OSFS) Chmod added in v0.4.3

func (o *OSFS) Chmod(name string, mode fs.FileMode) error

func (*OSFS) Chown added in v0.4.3

func (o *OSFS) Chown(name string, uid, gid int) error

func (*OSFS) Create

func (o *OSFS) Create(name string) (WFile, error)

func (*OSFS) CreateTemp added in v0.4.3

func (o *OSFS) CreateTemp(dir, pattern string) (RWFile, error)

func (*OSFS) Mkdir

func (o *OSFS) Mkdir(name string, perm fs.FileMode) error

func (*OSFS) Open

func (o *OSFS) Open(name string) (fs.File, error)

func (*OSFS) OpenFile

func (o *OSFS) OpenFile(name string, flag int, perm fs.FileMode) (RWFile, error)

func (*OSFS) Remove

func (o *OSFS) Remove(name string) error

func (*OSFS) Rename added in v0.4.3

func (o *OSFS) Rename(oldName, newName string) error

Rename moves a file or directory to a new name

func (*OSFS) Stat added in v0.5.0

func (o *OSFS) Stat(name string) (fs.FileInfo, error)

Stat returns a FileInfo describing the named file.

func (*OSFS) Sub

func (o *OSFS) Sub(name string) (*OSFS, error)

Sub returns an FS corresponding to the subtree rooted at dir.

type OSFile

type OSFile struct {
	*os.File
}

OSFile is a wrapper around os.* to implement RWFS

type ROFS

type ROFS struct {
	fs.FS // read requests pass through to underlying FS and File
}

ROFS wraps a fs.FS with permission denied on any write attempt

func RONew

func RONew(opts ...ROOpts) *ROFS

RONew creates a new read-only filesystem

func (*ROFS) Create

func (rofs *ROFS) Create(name string) (*ROFile, error)

func (*ROFS) Mkdir

func (rofs *ROFS) Mkdir(name string, perm fs.FileMode) error

func (*ROFS) Open

func (rofs *ROFS) Open(name string) (*ROFile, error)

func (*ROFS) OpenFile

func (rofs *ROFS) OpenFile(name string, flag int, perm fs.FileMode) (*ROFile, error)

type ROFile

type ROFile struct {
	fs.File
}

func (*ROFile) Write

func (rof *ROFile) Write(b []byte) (n int, err error)

type ROOpts

type ROOpts func(*roConfig)

ROOpts specifies options for RONew

func WithROFS

func WithROFS(roFS fs.FS) ROOpts

WithROFS provides the fs.FS used by ROFS

type RWFS

type RWFS interface {
	fs.FS
	WriteFS
}

type RWFile

type RWFile interface {
	fs.File
	WFile
}

func CreateTemp added in v0.4.3

func CreateTemp(rwfs RWFS, dir, pattern string) (RWFile, error)

CreateTemp returns a temp file

type RWPerms added in v0.4.3

type RWPerms interface {
	Chmod(filename string, mode fs.FileMode) error
	Chown(filename string, uid, gid int) error
}

type WFile

type WFile interface {
	// Close closes the open file
	Close() error
	// Stat returns the FileInfo of the file
	Stat() (fi fs.FileInfo, err error)
	// Write writes len(b) bytes to the file.
	// It returns the number of bytes written, and any error if n != len(b).
	Write(b []byte) (n int, err error)
}

WFile is the interface for a writable file

type WriteFS

type WriteFS interface {
	// Create creates a new file
	Create(string) (WFile, error)
	// Mkdir creates a directory
	Mkdir(string, fs.FileMode) error
	// OpenFile generalized file open with options for a flag and permissions
	OpenFile(string, int, fs.FileMode) (RWFile, error)
	// Remove removes the named file or (empty) directory.
	Remove(string) error
	// Rename moves a file or directory to a new name
	Rename(oldName, newName string) error
}

WriteFS is an interface for a writable filesystem

Jump to

Keyboard shortcuts

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