/
update.go
63 lines (55 loc) · 1.53 KB
/
update.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
package koyomi
import (
"context"
"encoding/json"
"log"
"github.com/pkg/errors"
"github.com/tkuchiki/parsetime"
)
type UpdateOption struct {
CalendarID string `required:"" help:"Calendar identifier"`
ID string `required:"" help:"Identifier of the event"`
Summary string `help:"Title of the event"`
Description string `help:"Description of the event"`
StartTime string `help:"The start time of the event" short:"s"`
EndTime string `help:"The end time of the event" short:"e"`
}
func (k *Koyomi) Update(ctx context.Context, opt *UpdateOption) error {
event := &Event{
ID: opt.ID,
Summary: opt.Summary,
Description: opt.Description,
}
if opt.StartTime != "" {
p, err := parsetime.NewParseTime()
if err != nil {
return errors.Wrap(err, "error parsetime.NewParseTime")
}
t, err := p.Parse(opt.StartTime)
if err != nil {
return errors.Wrap(err, "error Parse")
}
event.StartTime = t
}
if opt.EndTime != "" {
p, err := parsetime.NewParseTime()
if err != nil {
return errors.Wrap(err, "error parsetime.NewParseTime")
}
t, err := p.Parse(opt.EndTime)
if err != nil {
return errors.Wrap(err, "error Parse")
}
event.EndTime = t
}
var err error
event, err = k.cs.Update(ctx, opt.CalendarID, event)
if err != nil {
return errors.Wrap(err, "error Update")
}
log.Printf("[DEBUG] updated event: calendar_id=%s, id=%s", opt.CalendarID, event.ID)
if err := json.NewEncoder(k.stdout).Encode(event); err != nil {
return errors.Wrap(err, "error Encode")
}
return nil
}