repos / pico

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

commit
7d6b68e
parent
c81384f
author
Eric Bower
date
2025-01-18 22:00:45 -0500 EST
feat(pgs): list urls of all assets in a project with `fzf` cmd
2 files changed,  +41, -2
M pgs/cli.go
+36, -1
 1@@ -53,7 +53,7 @@ func projectTable(styles common.Styles, projects []*db.Project, width int) *tabl
 2 }
 3 
 4 func getHelpText(styles common.Styles, userName string, width int) string {
 5-	helpStr := "Commands: [help, stats, ls, rm, link, unlink, prune, retain, depends, acl, cache]\n"
 6+	helpStr := "Commands: [help, stats, ls, fzf, rm, link, unlink, prune, retain, depends, acl, cache]\n"
 7 	helpStr += styles.Note.Render("NOTICE:") + " *must* append with `--write` for the changes to persist.\n"
 8 
 9 	projectName := "projA"
10@@ -71,6 +71,10 @@ func getHelpText(styles common.Styles, userName string, width int) string {
11 			"ls",
12 			"lists projects",
13 		},
14+		{
15+			fmt.Sprintf("fzf %s", projectName),
16+			fmt.Sprintf("lists urls of all assets in %s", projectName),
17+		},
18 		{
19 			fmt.Sprintf("rm %s", projectName),
20 			fmt.Sprintf("delete %s", projectName),
21@@ -288,6 +292,37 @@ func (c *Cmd) unlink(projectName string) error {
22 	return nil
23 }
24 
25+func (c *Cmd) fzf(projectName string) error {
26+	project, err := c.Dbpool.FindProjectByName(c.User.ID, projectName)
27+	if err != nil {
28+		return err
29+	}
30+
31+	bucket, err := c.Store.GetBucket(shared.GetAssetBucketName(c.User.ID))
32+	if err != nil {
33+		return err
34+	}
35+
36+	objs, err := c.Store.ListObjects(bucket, project.ProjectDir, true)
37+	if err != nil {
38+		return err
39+	}
40+
41+	for _, obj := range objs {
42+		if strings.Contains(obj.Name(), "._pico_keep_dir") {
43+			continue
44+		}
45+		url := c.Cfg.AssetURL(
46+			c.User.Name,
47+			project.Name,
48+			strings.TrimPrefix(obj.Name(), "/"),
49+		)
50+		c.output(url)
51+	}
52+
53+	return nil
54+}
55+
56 func (c *Cmd) link(projectName, linkTo string) error {
57 	c.Log.Info("user running `link` command", "user", c.User.Name, "project", projectName, "link", linkTo)
58 
M pgs/wish.go
+5, -1
 1@@ -144,7 +144,11 @@ func WishMiddleware(handler *UploadAssetHandler) wish.Middleware {
 2 				"cmdArgs", cmdArgs,
 3 			)
 4 
 5-			if cmd == "stats" {
 6+			if cmd == "fzf" {
 7+				err := opts.fzf(projectName)
 8+				opts.bail(err)
 9+				return
10+			} else if cmd == "stats" {
11 				err := opts.statsByProject(projectName)
12 				opts.bail(err)
13 				return