1
0
Fork 0
mirror of https://github.com/vbatts/git-validation.git synced 2024-12-28 16:26:31 +00:00
git-validation/rules/dco/dco.go
Jonathan Boulle 41062f1be2 *: fix typos and stuff
because that's what I do

Signed-off-by: Jonathan Boulle <jon.boulle@coreos.com>
2016-04-05 15:28:12 -04:00

50 lines
1 KiB
Go

package dco
import (
"regexp"
"strings"
"github.com/vbatts/git-validation/git"
"github.com/vbatts/git-validation/validate"
)
func init() {
validate.RegisterRule(DcoRule)
}
var (
// ValidDCO is the regexp for signed off DCO
ValidDCO = regexp.MustCompile(`^Signed-off-by: ([^<]+) <([^<>@]+@[^<>]+)>$`)
// DcoRule is the rule being registered
DcoRule = validate.Rule{
Name: "DCO",
Description: "makes sure the commits are signed",
Run: ValidateDCO,
}
)
// ValidateDCO checks that the commit has been signed off, per the DCO process
func ValidateDCO(c git.CommitEntry) (vr validate.Result) {
vr.CommitEntry = c
if len(strings.Split(c["parent"], " ")) > 1 {
vr.Pass = true
vr.Msg = "merge commits do not require DCO"
return vr
}
hasValid := false
for _, line := range strings.Split(c["body"], "\n") {
if ValidDCO.MatchString(line) {
hasValid = true
}
}
if !hasValid {
vr.Pass = false
vr.Msg = "does not have a valid DCO"
} else {
vr.Pass = true
vr.Msg = "has a valid DCO"
}
return vr
}