package localfs import ( "io/fs" "os" "path" "strings" ) type FileSystemRepository struct { root string } func NewFileSystemRepository() *FileSystemRepository { return &FileSystemRepository{} } func (self *FileSystemRepository) getFilesFromPath(filepath string) ([]fs.FileInfo, error) { dirs, err := os.ReadDir(filepath) if err != nil { return nil, err } infos := make([]fs.FileInfo, 0, len(dirs)) for _, dir := range dirs { if strings.HasPrefix(dir.Name(), ".") { continue } info, err := dir.Info() if err != nil { return nil, err } infos = append(infos, info) } return infos, nil } func (self *FileSystemRepository) List(filepath string) ([]fs.FileInfo, error) { workingPath := path.Join(self.root, filepath) return self.getFilesFromPath(workingPath) } func (self *FileSystemRepository) Stat(filepath string) (fs.FileInfo, error) { workingPath := path.Join(self.root, filepath) return os.Stat(workingPath) }