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
}
