podman

Форк
0
51 строка · 1.1 Кб
1
package dco
2

3
import (
4
	"regexp"
5
	"strings"
6

7
	"github.com/vbatts/git-validation/git"
8
	"github.com/vbatts/git-validation/validate"
9
)
10

11
func init() {
12
	validate.RegisterRule(DcoRule)
13
}
14

15
var (
16
	// ValidDCO is the regexp for signed off DCO
17
	ValidDCO = regexp.MustCompile(`^Signed-off-by: ([^<]+) <([^<>@]+@[^<>]+)>$`)
18
	// DcoRule is the rule being registered
19
	DcoRule = validate.Rule{
20
		Name:        "DCO",
21
		Description: "makes sure the commits are signed",
22
		Run:         ValidateDCO,
23
		Default:     true,
24
	}
25
)
26

27
// ValidateDCO checks that the commit has been signed off, per the DCO process
28
func ValidateDCO(r validate.Rule, c git.CommitEntry) (vr validate.Result) {
29
	vr.CommitEntry = c
30
	if len(strings.Split(c["parent"], " ")) > 1 {
31
		vr.Pass = true
32
		vr.Msg = "merge commits do not require DCO"
33
		return vr
34
	}
35

36
	hasValid := false
37
	for _, line := range strings.Split(c["body"], "\n") {
38
		if ValidDCO.MatchString(line) {
39
			hasValid = true
40
		}
41
	}
42
	if !hasValid {
43
		vr.Pass = false
44
		vr.Msg = "does not have a valid DCO"
45
	} else {
46
		vr.Pass = true
47
		vr.Msg = "has a valid DCO"
48
	}
49

50
	return vr
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.