blob: 7dab9e635cdf4504739856bd5e1c81bb0e539489 [file] [log] [blame]
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
}