- 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
+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
+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