aboutsummaryrefslogtreecommitdiffstats
path: root/utils/fs/fs.go
blob: 3bcf88fe2a236c09c5d32b2fb6e0d7573a841caf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Package fs interace and implementations used by storage/filesystem
package fs

import (
	"errors"
	"io"
	"os"
)

var (
	ErrClosed       = errors.New("File: Writing on closed file.")
	ErrReadOnly     = errors.New("this is a read-only filesystem")
	ErrNotSupported = errors.New("feature not supported")
)

type Filesystem interface {
	Create(filename string) (File, error)
	Open(filename string) (File, error)
	Rename(from, to string) error
	Stat(filename string) (FileInfo, error)
	ReadDir(path string) ([]FileInfo, error)
	Join(elem ...string) string
	Dir(path string) Filesystem
	Base() string
}

type File interface {
	Filename() string
	IsClosed() bool
	io.Writer
	io.Reader
	io.Seeker
	io.Closer
}

type FileInfo os.FileInfo

type BaseFile struct {
	filename string
	closed   bool
}

//Filename returns the filename from the File
func (f *BaseFile) Filename() string {
	return f.filename
}

//IsClosed returns if te file is closed
func (f *BaseFile) IsClosed() bool {
	return f.closed
}