package filesystems import ( "io/fs" "os" "path/filepath" ) // OsFS is a simple fs.FS implementation that uses the local // file system. (We do not use os.DirFS because we do our own // rooting or path prefixing without being constrained to a single // root folder. The standard os.DirFS implementation is problematic // since roots can be dynamic in our application.) // // OsFS also implements fs.StatFS, fs.GlobFS, fs.ReadDirFS, and fs.ReadFileFS. type OsFS struct{} func (OsFS) Open(name string) (fs.File, error) { return os.Open(name) } func (OsFS) Stat(name string) (fs.FileInfo, error) { return os.Stat(name) } func (OsFS) Glob(pattern string) ([]string, error) { return filepath.Glob(pattern) } func (OsFS) ReadDir(name string) ([]fs.DirEntry, error) { return os.ReadDir(name) } func (OsFS) ReadFile(name string) ([]byte, error) { return os.ReadFile(name) } var ( _ fs.StatFS = (*OsFS)(nil) _ fs.GlobFS = (*OsFS)(nil) _ fs.ReadDirFS = (*OsFS)(nil) _ fs.ReadFileFS = (*OsFS)(nil) )