35 lines
564 B
Go
35 lines
564 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
iofs "io/fs"
|
||
|
)
|
||
|
|
||
|
type FS interface {
|
||
|
Open(path string) (io.ReadCloser, error)
|
||
|
List(path string) ([]string, error)
|
||
|
}
|
||
|
|
||
|
type fsFS struct{ iofs.FS }
|
||
|
|
||
|
func (fs fsFS) Open(path string) (io.ReadCloser, error) {
|
||
|
return fs.FS.Open(path)
|
||
|
}
|
||
|
|
||
|
func (fs fsFS) List(path string) (entries []string, err error) {
|
||
|
dirEnts, err := iofs.ReadDir(fs.FS, path)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
entries = make([]string, 0, len(dirEnts))
|
||
|
for _, ent := range dirEnts {
|
||
|
if ent.IsDir() {
|
||
|
continue
|
||
|
}
|
||
|
entries = append(entries, ent.Name())
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|