forked from hswaw/hscloud
57 lines
960 B
Go
57 lines
960 B
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
type gerritMeta struct {
|
||
|
patchSet int64
|
||
|
changeId string
|
||
|
commit string
|
||
|
}
|
||
|
|
||
|
// parseGerritMetadata takes a NoteDB metadata entry and extracts info from it.
|
||
|
func parseGerritMetadata(messages []string) *gerritMeta {
|
||
|
meta := &gerritMeta{}
|
||
|
|
||
|
for _, message := range messages {
|
||
|
for _, line := range strings.Split(message, "\n") {
|
||
|
line = strings.TrimSpace(line)
|
||
|
if len(line) == 0 {
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
parts := strings.SplitN(line, ":", 2)
|
||
|
if len(parts) < 2 {
|
||
|
continue
|
||
|
}
|
||
|
k, v := parts[0], strings.TrimSpace(parts[1])
|
||
|
|
||
|
switch k {
|
||
|
case "Patch-set":
|
||
|
n, err := strconv.ParseInt(v, 10, 64)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
meta.patchSet = n
|
||
|
case "Change-id":
|
||
|
meta.changeId = v
|
||
|
case "Commit":
|
||
|
meta.commit = v
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if meta.patchSet == 0 {
|
||
|
return nil
|
||
|
}
|
||
|
if meta.changeId == "" {
|
||
|
return nil
|
||
|
}
|
||
|
if meta.commit == "" {
|
||
|
return nil
|
||
|
}
|
||
|
return meta
|
||
|
}
|