package cmd import ( "fmt" "git.iamthefij.com/iamthefij/imap-notes/lib" "git.iamthefij.com/iamthefij/slog" "github.com/spf13/cobra" ) var notesCmd = &cobra.Command{ Use: "notes", Short: "List or access note actions", Aliases: []string{"note"}, Run: func(cmd *cobra.Command, args []string) { // Should execute the list command }, } var notesListCmd = WrapPositionalArgs( &cobra.Command{ Use: "list", Short: "List notes", Aliases: []string{"ls"}, Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { client, err := lib.GetClient() slog.OnErrFatalf(err, "failed to logon") folder, err := client.GetNoteFolder(args[0]) slog.OnErrFatalf(err, "failed to select folder") notes, err := folder.ListNotes() slog.OnErrFatalf(err, "failed to get notes from folder %s", args[0]) for _, note := range notes { fmt.Println(note.Name) } }, }, []string{"folder"}, 1, ) var notesGetCmd = WrapPositionalArgs( &cobra.Command{ Use: "get", Short: "Print content of a note", Aliases: []string{"print"}, Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { // TODO: refactor a bit of this duplicate here client, err := lib.GetClient() slog.OnErrFatalf(err, "failed to logon") folder, err := client.GetNoteFolder(args[0]) slog.OnErrFatalf(err, "failed to select folder") notes, err := folder.FindNotesByName(args[1]) slog.OnErrFatalf(err, "failed to get notes from folder %s", args[0]) note := notes[0] body, err := note.ReadMarkdown() slog.OnErrFatalf(err, "failed to read note") fmt.Println(body) }, }, []string{"folder", "note"}, 2, ) var notesViewCmd = WrapPositionalArgs( &cobra.Command{ Use: "view", Short: "View content of a note", Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { client, err := lib.GetClient() slog.OnErrFatalf(err, "failed to logon") folder, err := client.GetNoteFolder(args[0]) slog.OnErrFatalf(err, "failed to select folder") notes, err := folder.FindNotesByName(args[1]) slog.OnErrFatalf(err, "failed to get notes from folder %s", args[0]) note := notes[0] slog.OnErrFatalf(note.OpenMarkdownInPager(), "failed to open note") }, }, []string{"folder", "note"}, 2, ) var notesEditCmd = WrapPositionalArgs( &cobra.Command{ Use: "edit", Short: "Edit content of a note", Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { client, err := lib.GetClient() slog.OnErrFatalf(err, "failed to logon") folder, err := client.GetNoteFolder(args[0]) slog.OnErrFatalf(err, "failed to select folder") notes, err := folder.FindNotesByName(args[1]) slog.OnErrFatalf(err, "failed to get notes from folder %s", args[0]) note := notes[0] slog.OnErrFatalf(note.EditMarkdown(), "failed to open note") }, }, []string{"folder", "note"}, 2, ) func addNotesCmd() { rootCmd.AddCommand(notesCmd) notesCmd.AddCommand(notesListCmd) notesCmd.AddCommand(notesViewCmd) notesCmd.AddCommand(notesEditCmd) notesCmd.AddCommand(notesGetCmd) }