deno.land / x / esm@v135_2 / server / storage / fs_local.go

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package storage
import ( "io" "net/url" "os" "path" "path/filepath")
type localFSDriver struct{}
func (driver *localFSDriver) Open(root string, options url.Values) (FileSystem, error) { root = filepath.Clean(root) err := ensureDir(root) if err != nil { return nil, err } return &localFSLayer{root}, nil}
type localFSLayer struct { root string}
func (fs *localFSLayer) Stat(name string) (FileStat, error) { fullPath := path.Join(fs.root, name) fi, err := os.Lstat(fullPath) if err != nil { if os.IsNotExist(err) { return nil, ErrNotFound } return nil, err } return fi, nil}
func (fs *localFSLayer) OpenFile(name string) (file io.ReadSeekCloser, err error) { fullPath := path.Join(fs.root, name) file, err = os.Open(fullPath) if err != nil && os.IsNotExist(err) { err = ErrNotFound } return}
func (fs *localFSLayer) WriteFile(name string, content io.Reader) (written int64, err error) { fullPath := path.Join(fs.root, name) err = ensureDir(path.Dir(fullPath)) if err != nil { return }
file, err := os.Create(fullPath) if err != nil { return } defer file.Close()
written, err = io.Copy(file, content) return}
func ensureDir(dir string) (err error) { _, err = os.Lstat(dir) if err != nil && os.IsNotExist(err) { err = os.MkdirAll(dir, 0755) } return}
func init() { RegisterFileSystem("local", &localFSDriver{})}
esm

Version Info

Tagged at
a year ago