summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-10-27 22:00:31 +0200
committerPaul Buetow <paul@buetow.org>2024-10-27 22:00:31 +0200
commitdb4b435716f150ce0e92f4e5d6e2b01e67d07086 (patch)
tree662d935708f14623cfe1d75a52d327741af55906
parent9827378121f1fc800171e84e4a9660615cb1f1db (diff)
initial refactor
-rw-r--r--internal/entry/entry.go6
-rw-r--r--internal/entry/entry_test.go3
-rw-r--r--internal/queue/queue.go16
-rw-r--r--internal/schedule/schedule.go1
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