diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-15 10:51:26 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-15 10:51:26 -0800 |
| commit | 23258137e08a2e129ca25a8f7b0c9b286518eebd (patch) | |
| tree | 1782f8e55a1b8dbe02a09612dc9d1c381e7c68bf /cmd | |
| parent | 82ae577a037beb38582157dd686998836aa99d93 (diff) | |
| download | neko-23258137e08a2e129ca25a8f7b0c9b286518eebd.tar.gz neko-23258137e08a2e129ca25a8f7b0c9b286518eebd.tar.bz2 neko-23258137e08a2e129ca25a8f7b0c9b286518eebd.zip | |
Implement --purge and --purge-unread flags to delete old items
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/neko/main.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/cmd/neko/main.go b/cmd/neko/main.go index 3fd03f6..cc724df 100644 --- a/cmd/neko/main.go +++ b/cmd/neko/main.go @@ -1,6 +1,7 @@ package main import ( + "flag" "fmt" "os" "time" @@ -10,8 +11,7 @@ import ( "adammathes.com/neko/internal/exporter" "adammathes.com/neko/models" "adammathes.com/neko/models/feed" - - "flag" + "adammathes.com/neko/models/item" "adammathes.com/neko/internal/safehttp" "adammathes.com/neko/internal/vlog" @@ -31,6 +31,8 @@ func Run(args []string) error { var help, update, verbose, proxyImages, secureCookies bool var configFile, dbfile, newFeed, export, password string var port, minutes int + var purge int + var purgeUnread bool f := flag.NewFlagSet("neko", flag.ContinueOnError) @@ -51,6 +53,9 @@ func Run(args []string) error { f.StringVar(&export, "export", "", "export feed: text, opml, html, json") f.StringVar(&export, "x", "", "export feed (short)") + f.IntVar(&purge, "purge", 0, "purge read items older than N days") + f.BoolVar(&purgeUnread, "purge-unread", false, "when purging, also include unread items") + // options f.StringVar(&dbfile, "database", "", "sqlite database file") f.StringVar(&dbfile, "d", "", "sqlite database file (short)") @@ -126,6 +131,16 @@ func Run(args []string) error { models.InitDB() + if purge > 0 { + vlog.Printf("purging items older than %d days (include unread: %t)\n", purge, purgeUnread) + affected, err := item.Purge(purge, purgeUnread) + if err != nil { + return err + } + vlog.Printf("purged %d items\n", affected) + return nil + } + if update { vlog.Printf("starting crawl\n") crawler.Crawl() |
