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 editCmd = &cobra.Command{ Use: "edit", Aliases: []string{"e"}, Short: "Edit a specific zettel", Long: `zet edit|e ID zet edit|e 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() zet.EditZet(id) os.Exit(0) } if id, err := strconv.Atoi(args[0]); err == nil { zet.EditZet(id) os.Exit(0) } query = args[0] ids := zet.SearchZets(query) if len(ids) == 1 { zet.EditZet(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) } zet.EditZet(id) }, } func init() { rootCmd.AddCommand(editCmd) }