From d052fd6af938547777f7092b5f0f2fbb405a68d5 Mon Sep 17 00:00:00 2001 From: Seednode Date: Thu, 8 Sep 2022 13:12:50 -0500 Subject: [PATCH] Confirmed recursive and nonrecursive functions both work as expected --- cmd/files.go | 49 ++++++++++++++++++++----------------------------- cmd/web.go | 6 +++++- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/cmd/files.go b/cmd/files.go index 5092358..68715de 100644 --- a/cmd/files.go +++ b/cmd/files.go @@ -5,75 +5,66 @@ Copyright © 2022 Seednode package cmd import ( - "fmt" "math/rand" "os" "path/filepath" "time" ) -func getRandomFile(fileList []os.DirEntry) string { - rand.Seed(time.Now().Unix()) +func getFiles(path string) ([]string, error) { + var paths []string - file := fileList[rand.Intn(len(fileList))].Name() - - absolutePath, err := filepath.Abs(file) + err := filepath.WalkDir(path, func(p string, info os.DirEntry, err error) error { + if info.IsDir() && p != path { + return filepath.SkipDir + } else { + paths = append(paths, p) + } + return err + }) if err != nil { - panic(err) + return nil, err } - return absolutePath -} - -func getFiles(path string) ([]string, error) { - fileList, err := os.ReadDir(path) - - return fileList, err + return paths, nil } func getFilesRecursive(path string) ([]string, error) { var paths []string err := filepath.WalkDir(path, func(p string, info os.DirEntry, err error) error { - // if strings.HasPrefix(info.Name(), ".") { - // if info.IsDir() { - // return filepath.SkipDir - // } - // return err - // } if !info.IsDir() { paths = append(paths, p) } return err }) + if err != nil { + return nil, err + } - rand.Seed(time.Now().Unix()) - - file := paths[rand.Intn(len(paths))] - fmt.Println(file) - return paths, err + return paths, nil } -func getFileList(args []string) []string { +func getFileList(args []string) ([]string, error) { fileList := []string{} for i := 0; i < len(args); i++ { if Recursive { f, err := getFilesRecursive(args[i]) if err != nil { - panic(err) + return nil, err } fileList = append(fileList, f...) } else { f, err := getFiles(args[i]) if err != nil { - panic(err) + return nil, err } fileList = append(fileList, f...) } } - return fileList + return fileList, nil } func pickFile(fileList []string) (string, string) { diff --git a/cmd/web.go b/cmd/web.go index 90bc171..d9edba4 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -126,7 +126,11 @@ func doNothing(http.ResponseWriter, *http.Request) {} func ServePage(args []string) { - fileList := getFileList(args) + fileList, err := getFileList(args) + if err != nil { + panic(err) + } + fileName, filePath := pickFile(fileList) fmt.Println(fileName) fmt.Println(filePath)