If the argument isn't an ID, use fzf to find an ID

Signed-off-by: Oliver Davies <oliver@oliverdavies.uk>
This commit is contained in:
Oliver Davies 2025-09-30 22:43:12 +01:00
parent 329d6d34e0
commit 3c7a1dc3c1
5 changed files with 118 additions and 20 deletions

View file

@ -2,8 +2,10 @@ package cmd
import (
"fmt"
"log"
"os"
"strconv"
"strings"
"github.com/spf13/cobra"
@ -24,17 +26,46 @@ zet edit|e latest
}
var id int
var query string
if args[0] == "latest" {
id = lib.GetLatestZet()
} else {
i, err := strconv.Atoi(args[0])
if err != nil {
os.Exit(1)
}
lib.EditZet(id)
id = i
os.Exit(0)
}
if id, err := strconv.Atoi(args[0]); err == nil {
lib.EditZet(id)
os.Exit(0)
}
query = args[0]
ids := lib.SearchZets(query)
if len(ids) == 1 {
lib.EditZet(ids[0])
os.Exit(0)
}
zets := lib.ParseZetList(ids)
selected, err := lib.SelectWithFzf(zets)
if err != nil {
log.Fatalf("No zet selected.")
}
parts := strings.SplitN(selected, " ", 2)
id, err = strconv.Atoi(parts[0])
if err != nil {
log.Fatal(err)
}
lib.EditZet(id)

View file

@ -2,8 +2,10 @@ package cmd
import (
"fmt"
"log"
"os"
"strconv"
"strings"
"github.com/spf13/cobra"
@ -24,17 +26,46 @@ zet view|v latest
}
var id int
var query string
if args[0] == "latest" {
id = lib.GetLatestZet()
} else {
i, err := strconv.Atoi(args[0])
if err != nil {
os.Exit(1)
}
fmt.Println(lib.ViewZet(id))
id = i
os.Exit(0)
}
if id, err := strconv.Atoi(args[0]); err == nil {
fmt.Println(lib.ViewZet(id))
os.Exit(0)
}
query = args[0]
ids := lib.SearchZets(query)
if len(ids) == 1 {
fmt.Println(lib.ViewZet(ids[0]))
os.Exit(0)
}
zets := lib.ParseZetList(ids)
selected, err := lib.SelectWithFzf(zets)
if err != nil {
log.Fatalf("No zet selected.")
}
parts := strings.SplitN(selected, " ", 2)
id, err = strconv.Atoi(parts[0])
if err != nil {
log.Fatal(err)
}
fmt.Println(lib.ViewZet(id))