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
|
|
}
|