dirFileList returns the list of files in this directory, sorted according to DirsOnTop and SortByModTime options
()
| 284 | // dirFileList returns the list of files in this directory, |
| 285 | // sorted according to DirsOnTop and SortByModTime options |
| 286 | func (fn *Node) dirFileList() []os.FileInfo { |
| 287 | path := string(fn.Filepath) |
| 288 | var files []os.FileInfo |
| 289 | var dirs []os.FileInfo // for DirsOnTop mode |
| 290 | filepath.Walk(path, func(pth string, info os.FileInfo, err error) error { |
| 291 | if err != nil { |
| 292 | emsg := fmt.Sprintf("filetree.Node DirFileList Path %q: Error: %v", path, err) |
| 293 | log.Println(emsg) |
| 294 | return nil // ignore |
| 295 | } |
| 296 | if pth == path { // proceed.. |
| 297 | return nil |
| 298 | } |
| 299 | if fn.FileRoot.DirsOnTop { |
| 300 | if info.IsDir() { |
| 301 | dirs = append(dirs, info) |
| 302 | } else { |
| 303 | files = append(files, info) |
| 304 | } |
| 305 | } else { |
| 306 | files = append(files, info) |
| 307 | } |
| 308 | if info.IsDir() { |
| 309 | return filepath.SkipDir |
| 310 | } |
| 311 | return nil |
| 312 | }) |
| 313 | doModSort := fn.FileRoot.dirSortByModTime(core.Filename(path)) |
| 314 | if fn.FileRoot.DirsOnTop { |
| 315 | if doModSort { |
| 316 | sortByModTime(files) // just sort files, not dirs |
| 317 | } |
| 318 | files = append(dirs, files...) |
| 319 | } else { |
| 320 | if doModSort { |
| 321 | sortByModTime(files) |
| 322 | } |
| 323 | } |
| 324 | return files |
| 325 | } |
| 326 | |
| 327 | func sortByModTime(files []os.FileInfo) { |
| 328 | slices.SortFunc(files, func(a, b os.FileInfo) int { |
no test coverage detected