diff options
| author | Paul Buetow <paul@buetow.org> | 2024-09-28 11:58:41 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-09-28 11:58:41 +0300 |
| commit | 076c0d5afb299fedc5ee61a13bfec7f86055fc89 (patch) | |
| tree | 241e13b67f062bcf2c87f1ed86b1e136a991d6ea /internal | |
| parent | 9dda6355b81f6e6b93fc67d846657a388fcce4b7 (diff) | |
can schedule entry
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/oi/oi.go | 17 | ||||
| -rw-r--r-- | internal/schedule/schedule.go | 7 | ||||
| -rw-r--r-- | internal/schedule/stats.go | 1 |
3 files changed, 24 insertions, 1 deletions
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 { diff --git a/internal/schedule/schedule.go b/internal/schedule/schedule.go index 17c9588..d8b7143 100644 --- a/internal/schedule/schedule.go +++ b/internal/schedule/schedule.go @@ -4,9 +4,11 @@ import ( "errors" "fmt" "log" + "os" "strings" "codeberg.org/snonux/gos/internal/config" + "codeberg.org/snonux/gos/internal/oi" ) var NothingToSchedule = errors.New("nothing to schedule") @@ -24,5 +26,8 @@ func Run(args config.Args, platform string) (string, error) { return "", NothingToSchedule } - return "", NothingToSchedule + // Schedule random qeued entry for platform + return oi.ReadDirRandomEntry(dir, func(file os.DirEntry) bool { + return strings.HasSuffix(file.Name(), ".queued") + }) } diff --git a/internal/schedule/stats.go b/internal/schedule/stats.go index aac3737..b36fd54 100644 --- a/internal/schedule/stats.go +++ b/internal/schedule/stats.go @@ -117,6 +117,7 @@ func pastTime(duration time.Duration) time.Time { return nowTime().Add(-duration) } +// TODO: Maybe introduce types.Entry struct, which encapsulates all the parsing func parseEntryPath(filePath string) (time.Time, error) { // Format: foobarbaz.something.here.txt.STAMP.{posted,queued} // We want to get the STAMP! |
