summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-09-28 11:58:41 +0300
committerPaul Buetow <paul@buetow.org>2024-09-28 11:58:41 +0300
commit076c0d5afb299fedc5ee61a13bfec7f86055fc89 (patch)
tree241e13b67f062bcf2c87f1ed86b1e136a991d6ea /internal
parent9dda6355b81f6e6b93fc67d846657a388fcce4b7 (diff)
can schedule entry
Diffstat (limited to 'internal')
-rw-r--r--internal/oi/oi.go17
-rw-r--r--internal/schedule/schedule.go7
-rw-r--r--internal/schedule/stats.go1
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!