package cli import ( "fmt" "log" "os" "strconv" "strings" "code.oliverdavies.uk/opdavies/cmd-zet/internal/fzf" "code.oliverdavies.uk/opdavies/cmd-zet/internal/zet" "github.com/spf13/cobra" ) var viewCmd = &cobra.Command{ Use: "view", Aliases: []string{"v"}, Short: "View a specific zettel", Long: `zet view|v ID zet view|v latest `, Run: func(cli *cobra.Command, args []string) { if len(args) < 1 { fmt.Println("Error: No id provided") os.Exit(1) } var id int var query string if args[0] == "latest" { id = zet.GetLatestZet() fmt.Println(zet.ViewZet(id)) os.Exit(0) } if id, err := strconv.Atoi(args[0]); err == nil { fmt.Println(zet.ViewZet(id)) os.Exit(0) } query = args[0] ids := zet.SearchZets(query) if len(ids) == 1 { fmt.Println(zet.ViewZet(ids[0])) os.Exit(0) } zets := zet.ParseZetList(ids) selected, err := fzf.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(zet.ViewZet(id)) }, } func init() { rootCmd.AddCommand(viewCmd) }