aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go')
-rw-r--r--vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go b/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go
new file mode 100644
index 000000000..98587f262
--- /dev/null
+++ b/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go
@@ -0,0 +1,61 @@
+package messageregexp
+
+import (
+ "fmt"
+ "regexp"
+ "strings"
+
+ "github.com/vbatts/git-validation/git"
+ "github.com/vbatts/git-validation/validate"
+)
+
+func init() {
+ validate.RegisterRule(RegexpRule)
+}
+
+var (
+ // RegexpRule for validating a user provided regex on the commit messages
+ RegexpRule = validate.Rule{
+ Name: "message_regexp",
+ Description: "checks the commit message for a user provided regular expression",
+ Run: ValidateMessageRegexp,
+ Default: false, // only for users specifically calling it through -run ...
+ }
+)
+
+// ValidateMessageRegexp is the message regex func to run
+func ValidateMessageRegexp(r validate.Rule, c git.CommitEntry) (vr validate.Result) {
+ if r.Value == "" {
+ vr.Pass = true
+ vr.Msg = "noop: message_regexp value is blank"
+ return vr
+ }
+
+ re := regexp.MustCompile(r.Value)
+ vr.CommitEntry = c
+ if len(strings.Split(c["parent"], " ")) > 1 {
+ vr.Pass = true
+ vr.Msg = "merge commits are not checked for message_regexp"
+ return vr
+ }
+
+ hasValid := false
+ for _, line := range strings.Split(c["subject"], "\n") {
+ if re.MatchString(line) {
+ hasValid = true
+ }
+ }
+ for _, line := range strings.Split(c["body"], "\n") {
+ if re.MatchString(line) {
+ hasValid = true
+ }
+ }
+ if !hasValid {
+ vr.Pass = false
+ vr.Msg = fmt.Sprintf("commit message does not match %q", r.Value)
+ } else {
+ vr.Pass = true
+ vr.Msg = fmt.Sprintf("commit message matches %q", r.Value)
+ }
+ return vr
+}