pkg/embedutils/embedutil.go (33 lines of code) (raw):
package embedutils
import (
"embed"
"fmt"
"io/fs"
)
func EmbedFStoMap(embedFS embed.FS, path string) (map[string]fs.DirEntry, error) {
files, err := embedFS.ReadDir(path)
if err != nil {
return nil, fmt.Errorf("failed to readDir: %w", err)
}
mapping := make(map[string]fs.DirEntry)
for _, f := range files {
if f.IsDir() {
mapping[f.Name()] = f
}
}
return mapping, nil
}
func EmbedFStoMapWithFiles(embedFS fs.FS, path string) (map[string]fs.DirEntry, error) {
mapping := make(map[string]fs.DirEntry)
err := fs.WalkDir(embedFS, path, func(path string, f fs.DirEntry, err error) error {
if err != nil {
return err
}
mapping[path] = f
return nil
})
if err != nil {
return nil, fmt.Errorf("failed to walkDir: %w", err)
}
return mapping, nil
}