fs.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Package mem contains an in-memory FS.
  2. package mem
  3. import (
  4. "time"
  5. "github.com/hack-pad/hackpadfs"
  6. "github.com/hack-pad/hackpadfs/keyvalue"
  7. )
  8. // FS is an in-memory file system.
  9. type FS struct {
  10. kv *keyvalue.FS
  11. }
  12. // NewFS returns a new FS.
  13. func NewFS() (*FS, error) {
  14. kv, err := keyvalue.NewFS(newStore())
  15. return &FS{kv}, err
  16. }
  17. // Open implements hackpadfs.FS
  18. func (fs *FS) Open(name string) (hackpadfs.File, error) {
  19. return fs.kv.Open(name)
  20. }
  21. // OpenFile implements hackpadfs.OpenFileFS
  22. func (fs *FS) OpenFile(name string, flag int, perm hackpadfs.FileMode) (hackpadfs.File, error) {
  23. return fs.kv.OpenFile(name, flag, perm)
  24. }
  25. // Mkdir implements hackpadfs.MkdirFS
  26. func (fs *FS) Mkdir(name string, perm hackpadfs.FileMode) error {
  27. return fs.kv.Mkdir(name, perm)
  28. }
  29. // MkdirAll implements hackpadfs.MkdirAllFS
  30. func (fs *FS) MkdirAll(path string, perm hackpadfs.FileMode) error {
  31. return fs.kv.MkdirAll(path, perm)
  32. }
  33. // Remove implements hackpadfs.RemoveFS
  34. func (fs *FS) Remove(name string) error {
  35. return fs.kv.Remove(name)
  36. }
  37. // Rename implements hackpadfs.RenameFS
  38. func (fs *FS) Rename(oldname, newname string) error {
  39. return fs.kv.Rename(oldname, newname)
  40. }
  41. // Stat implements hackpadfs.StatFS
  42. func (fs *FS) Stat(name string) (hackpadfs.FileInfo, error) {
  43. return fs.kv.Stat(name)
  44. }
  45. // Chmod implements hackpadfs.ChmodFS
  46. func (fs *FS) Chmod(name string, mode hackpadfs.FileMode) error {
  47. return fs.kv.Chmod(name, mode)
  48. }
  49. // Chtimes implements hackpadfs.ChtimesFS
  50. func (fs *FS) Chtimes(name string, atime time.Time, mtime time.Time) error {
  51. return fs.kv.Chtimes(name, atime, mtime)
  52. }