fs: Add interface and FS implementations
This adds two implementations of the new `FS` interface: One for the local file system (`Local`) and one for a single file read from an `io.Reader` (`Reader`).
This commit is contained in:
parent
83ca08245b
commit
c4b2486b7c
14 changed files with 994 additions and 14 deletions
38
internal/fs/interface.go
Normal file
38
internal/fs/interface.go
Normal file
|
@ -0,0 +1,38 @@
|
|||
package fs
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
)
|
||||
|
||||
// FS bundles all methods needed for a file system.
|
||||
type FS interface {
|
||||
Open(name string) (File, error)
|
||||
OpenFile(name string, flag int, perm os.FileMode) (File, error)
|
||||
Stat(name string) (os.FileInfo, error)
|
||||
Lstat(name string) (os.FileInfo, error)
|
||||
|
||||
Join(elem ...string) string
|
||||
Separator() string
|
||||
Abs(path string) (string, error)
|
||||
Clean(path string) string
|
||||
VolumeName(path string) string
|
||||
IsAbs(path string) bool
|
||||
|
||||
Dir(path string) string
|
||||
Base(path string) string
|
||||
}
|
||||
|
||||
// File is an open file on a file system.
|
||||
type File interface {
|
||||
io.Reader
|
||||
io.Writer
|
||||
io.Closer
|
||||
|
||||
Fd() uintptr
|
||||
Readdirnames(n int) ([]string, error)
|
||||
Readdir(int) ([]os.FileInfo, error)
|
||||
Seek(int64, int) (int64, error)
|
||||
Stat() (os.FileInfo, error)
|
||||
Name() string
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue