12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package view
- import (
- "fmt"
- "io/fs"
- "path/filepath"
- "github.com/kataras/iris/v12/context"
- )
- // walk recursively in "fileSystem" descends "root" path, calling "walkFn".
- func walk(fileSystem fs.FS, root string, walkFn filepath.WalkFunc) error {
- if root != "" && root != "/" && root != "." {
- sub, err := fs.Sub(fileSystem, root)
- if err != nil {
- return err
- }
- fileSystem = sub
- }
- if root == "" {
- root = "."
- }
- return fs.WalkDir(fileSystem, root, func(path string, d fs.DirEntry, err error) error {
- if err != nil {
- return fmt.Errorf("walk: %s: %w", path, err)
- }
- info, err := d.Info()
- if err != nil {
- if err != filepath.SkipDir {
- return fmt.Errorf("walk stat: %s: %w", path, err)
- }
- return nil
- }
- if info.IsDir() {
- return nil
- }
- walkFnErr := walkFn(path, info, err)
- if walkFnErr != nil {
- return fmt.Errorf("walk: walkFn: %w", walkFnErr)
- }
- return nil
- })
- }
- func asset(fileSystem fs.FS, name string) ([]byte, error) {
- data, err := fs.ReadFile(fileSystem, name)
- if err != nil {
- return nil, fmt.Errorf("asset: read file: %w", err)
- }
- return data, nil
- }
- func getFS(fsOrDir interface{}) fs.FS {
- return context.ResolveFS(fsOrDir)
- }
- func getRootDirName(fileSystem fs.FS) string {
- rootDirFile, err := fileSystem.Open(".")
- if err == nil {
- rootDirStat, err := rootDirFile.Stat()
- if err == nil {
- return rootDirStat.Name()
- }
- }
- return ""
- }
|