fix: check only latest commit for non-ascii chars #38
|  | @ -7,7 +7,6 @@ import ( | ||||||
| 	"unicode" | 	"unicode" | ||||||
| 
 | 
 | ||||||
| 	"github.com/go-git/go-git/v5" | 	"github.com/go-git/go-git/v5" | ||||||
| 	"github.com/go-git/go-git/v5/plumbing/object" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // nonAsciiMsg checks for non-ASCII characters in the commit message.
 | // nonAsciiMsg checks for non-ASCII characters in the commit message.
 | ||||||
|  | @ -28,23 +27,19 @@ func NonAsciiMsg(root string) error { | ||||||
| 		slog.Error("getting reference", "err", err) | 		slog.Error("getting reference", "err", err) | ||||||
| 		return fmt.Errorf("error getting reference: %v", err) | 		return fmt.Errorf("error getting reference: %v", err) | ||||||
| 	} | 	} | ||||||
| 	commits, err := repo.Log(&git.LogOptions{From: ref.Hash()}) | 
 | ||||||
|  | 	commit, err := repo.CommitObject(ref.Hash()) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		slog.Error("getting commits", "err", err) | 		slog.Error("getting latest commit", "err", err) | ||||||
| 		return fmt.Errorf("error getting commits from reference %s: %v", ref.Hash(), err) | 		return fmt.Errorf("error getting latest commit: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var msgs []string | 	msg := commit.Message | ||||||
| 	err = commits.ForEach(func(c *object.Commit) error { | 	if msg == "" { | ||||||
| 		msgs = append(msgs, c.Message) |  | ||||||
| 		return nil | 		return nil | ||||||
| 	}) |  | ||||||
| 	if err != nil { |  | ||||||
| 		slog.Error("iterating commits", "err", err) |  | ||||||
| 		return fmt.Errorf("error iterating commits: %v", err) |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var nonAsciiMsgs []string | 	var isCommitLegal bool = true | ||||||
| 	// List of prefixes to ignore in the commit message
 | 	// List of prefixes to ignore in the commit message
 | ||||||
| 	ignoredPrefixes := []string{ | 	ignoredPrefixes := []string{ | ||||||
| 		"Co-authored-by:", | 		"Co-authored-by:", | ||||||
|  | @ -53,35 +48,31 @@ func NonAsciiMsg(root string) error { | ||||||
| 		"Reviewed-on:", | 		"Reviewed-on:", | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, msg := range msgs { | 	// Split message by lines and ignore specific lines with prefixes
 | ||||||
| 		if msg == "" { | 	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 | ||||||
| 		} | 		} | ||||||
| 		// Split message by lines and ignore specific lines with prefixes
 | 		// Check for non-ASCII characters in the rest of the lines
 | ||||||
| 		lines := strings.Split(msg, "\n") | 		for _, c := range line { | ||||||
| 		for _, line := range lines { | 			if c > unicode.MaxASCII { | ||||||
| 			trimmedLine := strings.TrimSpace(line) | 				isCommitLegal = false | ||||||
| 			ignore := false | 				break | ||||||
| 			for _, prefix := range ignoredPrefixes { |  | ||||||
| 				if strings.HasPrefix(trimmedLine, prefix) { |  | ||||||
| 					ignore = true |  | ||||||
| 					break |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			if ignore { |  | ||||||
| 				continue |  | ||||||
| 			} |  | ||||||
| 			// Check for non-ASCII characters in the rest of the lines
 |  | ||||||
| 			for _, c := range line { |  | ||||||
| 				if c > unicode.MaxASCII { |  | ||||||
| 					nonAsciiMsgs = append(nonAsciiMsgs, msg) |  | ||||||
| 					break |  | ||||||
| 				} |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if len(nonAsciiMsgs) > 0 { | 
 | ||||||
| 		return fmt.Errorf("Non-ASCII characters in commit messages:\n%s", strings.Join(nonAsciiMsgs, "\n")) | 	if !isCommitLegal { | ||||||
|  | 		return fmt.Errorf("Non-ASCII characters in commit messages:\n%s", msg) | ||||||
| 	} | 	} | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user