From 076c0d5afb299fedc5ee61a13bfec7f86055fc89 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 28 Sep 2024 11:58:41 +0300 Subject: can schedule entry --- internal/oi/oi.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'internal/oi') diff --git a/internal/oi/oi.go b/internal/oi/oi.go index fceafd2..27112bf 100644 --- a/internal/oi/oi.go +++ b/internal/oi/oi.go @@ -1,10 +1,14 @@ package oi import ( + "errors" "fmt" "io" "os" "path/filepath" + "time" + + "golang.org/x/exp/rand" ) func EnsureDirExists(dir string) error { @@ -57,6 +61,19 @@ func ReadDirSlurp(dir string, filter func(file os.DirEntry) bool) ([]string, err return files, nil } +func ReadDirRandomEntry(dir string, filter func(file os.DirEntry) bool) (string, error) { + files, err := ReadDirSlurp(dir, filter) + if err != nil { + return "", err + } + if len(files) == 0 { + return "", errors.New("no entry/file found") + } + + rand.Seed(uint64(time.Now().UnixNano())) + return files[rand.Intn(len(files))], nil +} + func IsRegular(path string) bool { stat, err := os.Stat(path) if err != nil { -- cgit v1.2.3