From 96ab2fcb2ff442698465389d75390afa91629165 Mon Sep 17 00:00:00 2001 From: Sam Scholten Date: Sun, 30 Aug 2026 12:50:24 +1000 Subject: fluxrec: personal Miniflux article recommender --- main.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..b5249e4 --- /dev/null +++ b/main.go @@ -0,0 +1,76 @@ +// fluxrec command-line tool. +// Personal Miniflux article recommender; see PLAN.md for the design. +package main + +import ( + "errors" + "flag" + "fmt" + "os" + + "fluxrec/cmds" + "fluxrec/core" +) + +func main() { + if len(os.Args) < 2 { + printHelp() + os.Exit(1) + } + + cmdName := os.Args[1] + args := os.Args[2:] + + if cmdName == "help" || cmdName == "--help" || cmdName == "-h" { + printHelp() + return + } + + var cmd core.Command + switch cmdName { + case "score": + cmd = &cmds.ScoreCommand{} + case "export": + cmd = &cmds.ExportCommand{} + case "train": + cmd = &cmds.TrainCommand{} + case "serve": + cmd = &cmds.ServeCommand{} + case "retrostar": + cmd = &cmds.RetrostarCommand{} + default: + fmt.Fprintf(os.Stderr, "Unknown command: %s\n\n", cmdName) + printHelp() + os.Exit(1) + } + + if err := cmd.Init(args); err != nil { + if errors.Is(err, flag.ErrHelp) { + os.Exit(0) + } + fmt.Fprintf(os.Stderr, "Error initializing %s command: %v\n", cmdName, err) + os.Exit(1) + } + + if err := cmd.Run(os.Stdin, os.Stdout); err != nil { + fmt.Fprintf(os.Stderr, "Error running %s command: %v\n", cmdName, err) + os.Exit(1) + } +} + +func printHelp() { + fmt.Printf(`fluxrec [arguments] + +Personal Miniflux article recommender (see PLAN.md). + +Commands: + score Score stdin titles with a trained model (debugging) + export Pull starred + sampled negatives from Miniflux into labels.jsonl + train Train a TF-IDF + LR model from labels.jsonl + serve Poll Miniflux, score, serve recommendations RSS (server) + retrostar Model-ranked candidates for retroactive starring (cold start) + +Usage: + echo "some title" | fluxrec score --model model.json +`) +} -- cgit v1.2.3