2022-02-09 17:46:27 +00:00
|
|
|
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
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
},
|
2022-02-09 17:46:27 +00:00
|
|
|
},
|
2022-02-11 23:53:36 +00:00
|
|
|
[]string{"folder"},
|
|
|
|
1,
|
|
|
|
)
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
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)
|
|
|
|
},
|
2022-02-09 17:46:27 +00:00
|
|
|
},
|
2022-02-11 23:53:36 +00:00
|
|
|
[]string{"folder", "note"},
|
|
|
|
2,
|
|
|
|
)
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
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")
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
folder, err := client.GetNoteFolder(args[0])
|
|
|
|
slog.OnErrFatalf(err, "failed to select folder")
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
notes, err := folder.FindNotesByName(args[1])
|
|
|
|
slog.OnErrFatalf(err, "failed to get notes from folder %s", args[0])
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
note := notes[0]
|
|
|
|
slog.OnErrFatalf(note.OpenMarkdownInPager(), "failed to open note")
|
|
|
|
},
|
2022-02-09 17:46:27 +00:00
|
|
|
},
|
2022-02-11 23:53:36 +00:00
|
|
|
[]string{"folder", "note"},
|
|
|
|
2,
|
|
|
|
)
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
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")
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
folder, err := client.GetNoteFolder(args[0])
|
|
|
|
slog.OnErrFatalf(err, "failed to select folder")
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
notes, err := folder.FindNotesByName(args[1])
|
|
|
|
slog.OnErrFatalf(err, "failed to get notes from folder %s", args[0])
|
2022-02-09 17:46:27 +00:00
|
|
|
|
2022-02-11 23:53:36 +00:00
|
|
|
note := notes[0]
|
|
|
|
slog.OnErrFatalf(note.EditMarkdown(), "failed to open note")
|
|
|
|
},
|
2022-02-09 17:46:27 +00:00
|
|
|
},
|
2022-02-11 23:53:36 +00:00
|
|
|
[]string{"folder", "note"},
|
|
|
|
2,
|
|
|
|
)
|
2022-02-09 17:46:27 +00:00
|
|
|
|
|
|
|
func addNotesCmd() {
|
|
|
|
rootCmd.AddCommand(notesCmd)
|
|
|
|
notesCmd.AddCommand(notesListCmd)
|
|
|
|
notesCmd.AddCommand(notesViewCmd)
|
|
|
|
notesCmd.AddCommand(notesEditCmd)
|
|
|
|
notesCmd.AddCommand(notesGetCmd)
|
|
|
|
}
|