diff options
| author | Paul Buetow <paul@buetow.org> | 2024-10-27 22:00:31 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-10-27 22:00:31 +0200 |
| commit | db4b435716f150ce0e92f4e5d6e2b01e67d07086 (patch) | |
| tree | 662d935708f14623cfe1d75a52d327741af55906 | |
| parent | 9827378121f1fc800171e84e4a9660615cb1f1db (diff) | |
initial refactor
| -rw-r--r-- | internal/entry/entry.go | 6 | ||||
| -rw-r--r-- | internal/entry/entry_test.go | 3 | ||||
| -rw-r--r-- | internal/queue/queue.go | 16 | ||||
| -rw-r--r-- | internal/schedule/schedule.go | 1 |
4 files changed, 18 insertions, 8 deletions
diff --git a/internal/entry/entry.go b/internal/entry/entry.go index 1c5dbad..0fe203e 100644 --- a/internal/entry/entry.go +++ b/internal/entry/entry.go @@ -23,7 +23,7 @@ const ( ) var ( - validTags = []string{"ask", "prio", "now"} + validTags = []string{"ask", "prio", "now"} // TODO: Document all tags ErrSizeLimitExceeded = errors.New("message size limit exceeded") ) @@ -162,6 +162,10 @@ func (e Entry) Edit() error { return nil } +func (e Entry) Remove() error { + return os.Remove(e.Path) +} + func extractURLs(input string) []string { urlPattern := `(http://|https://|ftp://)[^\s]+` re := regexp.MustCompile(urlPattern) diff --git a/internal/entry/entry_test.go b/internal/entry/entry_test.go index c59dc16..ac97f04 100644 --- a/internal/entry/entry_test.go +++ b/internal/entry/entry_test.go @@ -94,6 +94,9 @@ func TestHasTag(t *testing.T) { if err != nil { t.Error(err) } + if len(expectedTags) != len(ent.tags) { + t.Errorf("expected '%d' tags but got '%d'", len(expectedTags), len(ent.tags)) + } for _, tag := range expectedTags { if !ent.HasTag(tag) { t.Errorf("expected tag '%s' but got '%s'", tag, ent.tags) diff --git a/internal/queue/queue.go b/internal/queue/queue.go index 229c3c5..e0c6667 100644 --- a/internal/queue/queue.go +++ b/internal/queue/queue.go @@ -11,6 +11,7 @@ import ( "time" "codeberg.org/snonux/gos/internal/config" + "codeberg.org/snonux/gos/internal/entry" "codeberg.org/snonux/gos/internal/oi" "codeberg.org/snonux/gos/internal/prompt" "codeberg.org/snonux/gos/internal/timestamp" @@ -42,19 +43,22 @@ func queueEntries(args config.Args) error { } for filePath := range ch { - // TODO: Document .ask. in README.md - if strings.Contains(filepath.Base(filePath), ".ask.") { - bytes, err := os.ReadFile(filePath) + ent, err := entry.New(filePath) + if err != nil { + return err + } + if ent.HasTag("ask") { + content, _, err := ent.Content() if err != nil { return err } // TODO Refactor - err = prompt.DoYouWantThis("Do you want to queue this content", strings.TrimSpace(string(bytes))) + err = prompt.DoYouWantThis("Do you want to queue this content", content) switch { case errors.Is(err, prompt.ErrEditContent): - err = prompt.EditFile(filePath) + err = ent.Edit() case errors.Is(err, prompt.ErrDeleteFile): - if err = os.Remove(filePath); err == nil { + if err = ent.Remove(); err == nil { continue } } diff --git a/internal/schedule/schedule.go b/internal/schedule/schedule.go index 5ac2732..473ddc8 100644 --- a/internal/schedule/schedule.go +++ b/internal/schedule/schedule.go @@ -28,7 +28,6 @@ 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. - // TODO: Document .now. tag ent, err := selectRandomEntry(dir, "now") if err != nil && !errors.Is(err, oi.ErrNotFound) { // Unknown error |
