podman
51 строка · 1.1 Кб
1package dco2
3import (4"regexp"5"strings"6
7"github.com/vbatts/git-validation/git"8"github.com/vbatts/git-validation/validate"9)
10
11func init() {12validate.RegisterRule(DcoRule)13}
14
15var (16// ValidDCO is the regexp for signed off DCO17ValidDCO = regexp.MustCompile(`^Signed-off-by: ([^<]+) <([^<>@]+@[^<>]+)>$`)18// DcoRule is the rule being registered19DcoRule = validate.Rule{20Name: "DCO",21Description: "makes sure the commits are signed",22Run: ValidateDCO,23Default: true,24}25)
26
27// ValidateDCO checks that the commit has been signed off, per the DCO process
28func ValidateDCO(r validate.Rule, c git.CommitEntry) (vr validate.Result) {29vr.CommitEntry = c30if len(strings.Split(c["parent"], " ")) > 1 {31vr.Pass = true32vr.Msg = "merge commits do not require DCO"33return vr34}35
36hasValid := false37for _, line := range strings.Split(c["body"], "\n") {38if ValidDCO.MatchString(line) {39hasValid = true40}41}42if !hasValid {43vr.Pass = false44vr.Msg = "does not have a valid DCO"45} else {46vr.Pass = true47vr.Msg = "has a valid DCO"48}49
50return vr51}
52