repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

commit
e956960
parent
588d72e
author
Eric Bower
date
2025-08-22 16:31:27 -0400 EDT
feat(feeds): cli `print` command prints the feed post
1 files changed,  +24, -1
M pkg/apps/feeds/cli.go
+24, -1
 1@@ -25,6 +25,8 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
 2 				return err
 3 			}
 4 
 5+			logger = shared.LoggerWithUser(logger, user)
 6+
 7 			cmd := "help"
 8 			if len(args) > 0 {
 9 				cmd = args[0]
10@@ -32,7 +34,7 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
11 
12 			switch cmd {
13 			case "help":
14-				_, _ = fmt.Fprintf(sesh, "Commands: [help, ls, rm, run]\r\n\r\n")
15+				_, _ = fmt.Fprintf(sesh, "Commands: [help, ls, rm, print, run]\r\n\r\n")
16 				writer := tabwriter.NewWriter(sesh, 0, 0, 1, ' ', tabwriter.TabIndent)
17 				_, _ = fmt.Fprintln(writer, "Cmd\tDesc")
18 				_, _ = fmt.Fprintf(
19@@ -50,6 +52,11 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
20 					"%s\t%s\r\n",
21 					"rm {filename}", "removes feed digest post",
22 				)
23+				_, _ = fmt.Fprintf(
24+					writer,
25+					"%s\t%s\r\n",
26+					"print {filename}", "prints the feed digest file",
27+				)
28 				_, _ = fmt.Fprintf(
29 					writer,
30 					"%s\t%s\r\n",
31@@ -106,6 +113,7 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
32 					_, _ = fmt.Fprintln(sesh.Stderr(), err)
33 					return err
34 				}
35+				logger.Info("rm cmd", "filename", filename, "write", write)
36 				if write {
37 					err = dbpool.RemovePosts([]string{post.ID})
38 					if err != nil {
39@@ -117,6 +125,20 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
40 					_, _ = fmt.Fprintln(sesh, "WARNING: *must* append with `--write` for the changes to persist.")
41 				}
42 				return err
43+			case "print":
44+				if len(args) < 2 {
45+					err := fmt.Errorf("must provide filename of post to run")
46+					_, _ = fmt.Fprintln(sesh.Stderr(), err)
47+					return err
48+				}
49+				filename := args[1]
50+				post, err := dbpool.FindPostWithFilename(filename, user.ID, "feeds")
51+				if err != nil {
52+					_, _ = fmt.Fprintln(sesh.Stderr(), err)
53+					return err
54+				}
55+				_, _ = fmt.Fprintf(sesh, "%s\n", post.Text)
56+				return nil
57 			case "run":
58 				if len(args) < 2 {
59 					err := fmt.Errorf("must provide filename of post to run")
60@@ -130,6 +152,7 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
61 					return err
62 				}
63 				_, _ = fmt.Fprintf(sesh, "running feed post: %s\r\n", filename)
64+				logger.Info("run cmd", "filename", filename)
65 				fetcher := NewFetcher(dbpool, cfg)
66 				err = fetcher.RunPost(logger, user, post, true, time.Now().UTC())
67 				if err != nil {