summaryrefslogtreecommitdiff
path: root/frontend.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2017-11-16 17:06:26 -0500
committerLuke Shumaker <lukeshu@lukeshu.com>2017-11-16 17:06:26 -0500
commit2b0bd61baca0d83b31dbea7a8e1a670d30a94a22 (patch)
treed07edbfa9e9ded23c00ac60832d0466829593a0d /frontend.go
parentf9091033da16659b8aa23890b2294c42550e76b2 (diff)
frontend: implement tag
Diffstat (limited to 'frontend.go')
-rw-r--r--frontend.go33
1 files changed, 32 insertions, 1 deletions
diff --git a/frontend.go b/frontend.go
index 3319eee..c08e1b8 100644
--- a/frontend.go
+++ b/frontend.go
@@ -215,7 +215,38 @@ func (f *Frontend) parse() error {
// 'from' SP <commit-ish> LF
// 'tagger' (SP <name>)? SP LT <email> GT SP <when> LF
// data
- // TODO
+ c := CmdTag{RefName: trimLinePrefix(line, "tag ")}
+
+ line, err = f.nextLine()
+ if err != nil {
+ return err
+ }
+ if !strings.HasPrefix(line, "from ") {
+ return fmt.Errorf("tag: expected from command: %v", line)
+ }
+ c.CommitIsh = trimLinePrefix(line, "from ")
+
+ line, err = f.nextLine()
+ if err != nil {
+ return err
+ }
+ if !strings.HasPrefix(line, "tagger ") {
+ return fmt.Errorf("tag: expected tagger command: %v", line)
+ }
+ c.Tagger, err = textproto.ParseUserTime(trimLinePrefix(line, "tagger "))
+ if err != nil {
+ return err
+ }
+
+ line, err = f.nextLine()
+ if err != nil {
+ return err
+ }
+ c.Data, err = parse_data(line)
+ if err != nil {
+ return err
+ }
+ f.cmd <- c
default:
return UnsupportedCommand(line)
}