summaryrefslogtreecommitdiff
path: root/internal/schedule
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-10-31 23:09:54 +0200
committerPaul Buetow <paul@buetow.org>2024-10-31 23:09:54 +0200
commitc2b3c4f6e4d40c49d55deb5b696bb3cb8cdde531 (patch)
tree1f83f75bf085dc1b02e7562cfcb759f4d8c6486c /internal/schedule
parent1c143f2e4faeb803f5f7c96f29c1ef447a0b2097 (diff)
intial warning when there aren't enough queued
Diffstat (limited to 'internal/schedule')
-rw-r--r--internal/schedule/schedule.go24
1 files changed, 15 insertions, 9 deletions
diff --git a/internal/schedule/schedule.go b/internal/schedule/schedule.go
index 473ddc8..b2c2702 100644
--- a/internal/schedule/schedule.go
+++ b/internal/schedule/schedule.go
@@ -12,6 +12,7 @@ import (
"codeberg.org/snonux/gos/internal/config"
"codeberg.org/snonux/gos/internal/entry"
"codeberg.org/snonux/gos/internal/oi"
+ "codeberg.org/snonux/gos/internal/prompt"
)
var (
@@ -28,13 +29,13 @@ func Run(args config.Args, platform string) (entry.Entry, error) {
log.Println("For", platform, "stats:", stats)
// Schedule random queued entry with "now" tag, ignoring the target hit stats.
- ent, err := selectRandomEntry(dir, "now")
+ en, numQueued, err := selectRandomEntry(dir, "now")
if err != nil && !errors.Is(err, oi.ErrNotFound) {
// Unknown error
- return ent, nil
+ return en, nil
}
if err == nil {
- return ent, nil
+ return en, nil
}
if stats.targetHit(args.PauseDays) {
@@ -42,30 +43,35 @@ func Run(args config.Args, platform string) (entry.Entry, error) {
}
// Schedule random qeued entry for platform. Find one with prio tag.
- ent, err = selectRandomEntry(dir, "prio")
+ en, _, err = selectRandomEntry(dir, "prio")
if errors.Is(err, oi.ErrNotFound) {
// No entry with priority tag found, select another one.
- ent, err = selectRandomEntry(dir, "")
+ en, numQueued, err = selectRandomEntry(dir, "")
}
if err != nil {
return entry.Zero, fmt.Errorf("%w: %w", ErrNothingQueued, err)
}
- return ent, nil
+ // TODO: Fix this, it warns only when there are no now and prio tags used.
+ if numQueued < args.MinQueued {
+ prompt.Warn("Only %d items queued for %s, want to have %d", numQueued, platform, args.MinQueued)
+ fmt.Print("\n")
+ }
+ return en, nil
}
// Select a random queed entry with a given tag. If the tag is the empty string,
// then select any random qeued entry.
-func selectRandomEntry(dir, tag string) (entry.Entry, error) {
+func selectRandomEntry(dir, tag string) (entry.Entry, int, error) {
return oi.ReadDirRandom(dir, func(file os.DirEntry) (entry.Entry, bool) {
// Is there a ".TAG." in the file name?
if tag != "" && !slices.Contains(strings.Split(file.Name(), "."), tag) {
return entry.Zero, false
}
- ent, err := entry.New(filepath.Join(dir, file.Name()))
+ en, err := entry.New(filepath.Join(dir, file.Name()))
if err != nil {
log.Println(err)
return entry.Zero, false
}
- return ent, ent.State == entry.Queued
+ return en, en.State == entry.Queued
})
}