filecheck/nonasciiMsg #35

Merged
周赵嘉程521432910016 merged 3 commits from filecheck/nonasciiMsg into master 2024-09-13 12:11:29 +08:00

View File

@ -15,12 +15,12 @@ import (
// Otherwise, it iterates over each character in the message and checks if it is a non-ASCII character. // Otherwise, it iterates over each character in the message and checks if it is a non-ASCII character.
// If a non-ASCII character is found, it returns an error indicating not to use non-ASCII characters in commit messages. // If a non-ASCII character is found, it returns an error indicating not to use non-ASCII characters in commit messages.
// Otherwise, it returns nil indicating that the commit message is valid. // Otherwise, it returns nil indicating that the commit message is valid.
// It skips the non-ASCII characters check for lines starting with specific keywords like "Co-authored-by", "Reviewed-by", and "Co-committed-by".
func NonAsciiMsg(root string) error { func NonAsciiMsg(root string) error {
// cmd := exec.Command("git", "log", "--encoding=UTF-8", "--format=%B")
repo, err := git.PlainOpen(root) repo, err := git.PlainOpen(root)
if err != nil { if err != nil {
slog.Error("openning git repo", "err", err) slog.Error("opening git repo", "err", err)
return fmt.Errorf("error openning git repo: %v", err) return fmt.Errorf("error opening git repo: %v", err)
} }
ref, err := repo.Head() ref, err := repo.Head()
@ -45,16 +45,38 @@ func NonAsciiMsg(root string) error {
} }
var nonAsciiMsgs []string var nonAsciiMsgs []string
// List of prefixes to ignore in the commit message
ignoredPrefixes := []string{
"Co-authored-by:",
"Reviewed-by:",
"Co-committed-by:",
"Reviewed-on:",
}
for _, msg := range msgs { for _, msg := range msgs {
if msg == "" { if msg == "" {
continue continue
} }
if strings.HasPrefix(msg, "Merge pull request") { // Split message by lines and ignore specific lines with prefixes
lines := strings.Split(msg, "\n")
for _, line := range lines {
trimmedLine := strings.TrimSpace(line)
ignore := false
for _, prefix := range ignoredPrefixes {
if strings.HasPrefix(trimmedLine, prefix) {
ignore = true
break
}
}
if ignore {
continue continue
} }
for _, c := range msg { // Check for non-ASCII characters in the rest of the lines
for _, c := range line {
if c > unicode.MaxASCII { if c > unicode.MaxASCII {
nonAsciiMsgs = append(nonAsciiMsgs, msg) nonAsciiMsgs = append(nonAsciiMsgs, msg)
break
}
} }
} }
} }