...
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package filesystem
15
16 import (
17 "io"
18 "os"
19 )
20
21
22 type Filesystem interface {
23 Mkdir(name string, perm os.FileMode) error
24 MkdirAll(path string, perm os.FileMode) error
25 Open(string) (File, error)
26 Create(string) (File, error)
27 Stat(string) (os.FileInfo, error)
28 TempFile(dir, pattern string) (File, error)
29 Rename(oldpath, newpath string) error
30 Remove(name string) error
31 Link(oldname, newname string) error
32 }
33
34 type defaultFS struct{}
35
36 var _ Filesystem = &defaultFS{}
37
38 func (fs *defaultFS) Mkdir(name string, perm os.FileMode) error {
39 return os.Mkdir(name, perm)
40 }
41
42 func (fs *defaultFS) MkdirAll(path string, perm os.FileMode) error {
43 return os.MkdirAll(path, perm)
44 }
45
46 func (fs *defaultFS) Open(name string) (File, error) {
47 return os.Open(name)
48 }
49
50 func (fs *defaultFS) TempFile(dir, pattern string) (File, error) {
51 return os.CreateTemp(dir, pattern)
52 }
53
54 func (fs *defaultFS) Create(name string) (File, error) {
55 return os.Create(name)
56 }
57
58 func (fs *defaultFS) Stat(name string) (os.FileInfo, error) {
59 return os.Stat(name)
60 }
61
62 func (fs *defaultFS) Rename(oldpath, newpath string) error {
63 return os.Rename(oldpath, newpath)
64 }
65
66 func (fs *defaultFS) Remove(name string) error {
67 return os.Remove(name)
68 }
69
70 func (fs *defaultFS) Link(oldname, newname string) error {
71 return os.Link(oldname, newname)
72 }
73
74
75 type File interface {
76 io.Reader
77 io.Closer
78 io.Writer
79 io.ReaderAt
80 io.Seeker
81 Name() string
82 Readdir(int) ([]os.FileInfo, error)
83 Stat() (os.FileInfo, error)
84 }
85
86 type defaultFile struct {
87 *os.File
88 }
89
90 var _ File = &defaultFile{}
91
92
93 func Default() Filesystem {
94 return &defaultFS{}
95 }
96
View as plain text