diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2017-11-16 17:06:26 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2017-11-16 17:06:26 -0500 |
commit | 2b0bd61baca0d83b31dbea7a8e1a670d30a94a22 (patch) | |
tree | d07edbfa9e9ded23c00ac60832d0466829593a0d /frontend.go | |
parent | f9091033da16659b8aa23890b2294c42550e76b2 (diff) |
frontend: implement tag
Diffstat (limited to 'frontend.go')
-rw-r--r-- | frontend.go | 33 |
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) } |