This repository has been archived by the owner on May 11, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
note.go
129 lines (110 loc) · 2.96 KB
/
note.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package commands
import (
"fmt"
"os"
"strconv"
"github.com/robdimsdale/wundergo"
"github.com/spf13/cobra"
)
const (
contentLongFlag = "content"
)
var (
// Flags
content string
// Commands
cmdNotes = &cobra.Command{
Use: "notes",
Short: "gets all notes",
Long: `notes gets the user's notes.
`,
Run: func(cmd *cobra.Command, args []string) {
if taskID != 0 {
renderOutput(newClient(cmd).NotesForTaskID(taskID))
} else if listID != 0 {
renderOutput(newClient(cmd).NotesForListID(listID))
} else {
renderOutput(newClient(cmd).Notes())
}
},
}
cmdNote = &cobra.Command{
Use: "note <note-id>",
Short: "gets the note for the provided note id",
Long: `note gets a note specified by <note-id>
`,
Run: func(cmd *cobra.Command, args []string) {
renderOutput(note(cmd, args))
},
}
cmdCreateNote = &cobra.Command{
Use: "create-note",
Short: "creates a note with the specified args",
Long: `create-note creates a note with the specified args
`,
Run: func(cmd *cobra.Command, args []string) {
renderOutput(newClient(cmd).CreateNote(
content,
taskID,
))
},
}
cmdUpdateNote = &cobra.Command{
Use: "update-note",
Short: "updates a note with the specified args",
Long: `update-note obtains the current state of the note,
and updates fields with the provided flags.
`,
Run: func(cmd *cobra.Command, args []string) {
note, err := note(cmd, args)
if err != nil {
handleError(err)
}
if cmd.Flags().Changed(contentLongFlag) {
note.Content = content
}
renderOutput(newClient(cmd).UpdateNote(note))
},
}
cmdDeleteNote = &cobra.Command{
Use: "delete-note <note-id>",
Short: "deletes the note for the provided note id",
Long: `delete-note deletes the note specified by <note-id>
`,
Run: func(cmd *cobra.Command, args []string) {
note, err := note(cmd, args)
if err != nil {
fmt.Printf("error getting note: %v\n\n", err)
cmd.Usage()
os.Exit(2)
}
err = newClient(cmd).DeleteNote(note)
if err != nil {
handleError(err)
}
fmt.Printf("note %d deleted successfully\n", note.ID)
},
}
)
func init() {
cmdNotes.Flags().UintVarP(&taskID, taskIDLongFlag, taskIDShortFlag, 0, "filter by taskID")
cmdNotes.Flags().UintVarP(&listID, listIDLongFlag, listIDShortFlag, 0, "filter by listID")
cmdCreateNote.Flags().UintVarP(&taskID, taskIDLongFlag, taskIDShortFlag, 0, "id of task to which note belongs")
cmdCreateNote.Flags().StringVar(&content, contentLongFlag, "", "note content")
cmdUpdateNote.Flags().StringVar(&content, contentLongFlag, "", "note content")
}
func note(cmd *cobra.Command, args []string) (wundergo.Note, error) {
if len(args) != 1 {
fmt.Printf("incorrect number of arguments provided\n\n")
cmd.Usage()
os.Exit(2)
}
idInt, err := strconv.Atoi(args[0])
if err != nil {
fmt.Printf("error parsing noteID: %v\n\n", err)
cmd.Usage()
os.Exit(2)
}
id := uint(idInt)
return newClient(cmd).Note(id)
}