From c0bd1c1fcfad57fb077ebb5d1f44abf4a281ec71 Mon Sep 17 00:00:00 2001 From: zzjc1234 <2359047351@qq.com> Date: Fri, 30 Aug 2024 14:00:48 +0800 Subject: [PATCH] fix: nonascii in localList --- cmd/healthcheck/main.go | 3 +-- pkg/healthcheck/nonascii.go | 26 ++++++++++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/cmd/healthcheck/main.go b/cmd/healthcheck/main.go index 9901f70..1a6b3cf 100644 --- a/cmd/healthcheck/main.go +++ b/cmd/healthcheck/main.go @@ -64,7 +64,7 @@ func main() { if err != nil { fmt.Printf("## Forbidden File Check Failed:\n%s\n", err.Error()) } - err = healthcheck.NonAsciiFiles(*rootDir) + err = healthcheck.NonAsciiFiles(*rootDir, *localList) if err != nil { fmt.Printf("## Non-ASCII Characters File Check Failed:\n%s\n", err.Error()) } @@ -81,5 +81,4 @@ func main() { if err != nil { fmt.Printf("## Repo File Check Failed:\n%s\n", err.Error()) } - } diff --git a/pkg/healthcheck/nonascii.go b/pkg/healthcheck/nonascii.go index 1d910f9..ca152fb 100644 --- a/pkg/healthcheck/nonascii.go +++ b/pkg/healthcheck/nonascii.go @@ -12,16 +12,34 @@ import ( // getNonAscii retrieves a list of files in the specified root directory that contain non-ASCII characters. // It searches for non-ASCII characters in each file's content and returns a list of paths to files containing non-ASCII characters. -func getNonAscii(root string) ([]string, error) { +func getNonAscii(root string, localList string) ([]string, error) { var nonAscii []string + var dirs []string + + if localList != "" { + file, err := os.Open(localList) + if err != nil { + return nil, fmt.Errorf("Failed to open file %s: %v\n", localList, err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + dirs = append(dirs, scanner.Text()) + } + if err := scanner.Err(); err != nil { + return nil, fmt.Errorf("Error reading file %s: %v\n", localList, err) + } + } + err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if info.IsDir() { - if info.Name() == ".git" || info.Name() == ".gitea" || info.Name() == "ci" { + if info.Name() == ".git" || info.Name() == ".gitea" || info.Name() == "ci" || (localList != "" && inString(info.Name(), dirs)) { return filepath.SkipDir } else { return nil @@ -61,8 +79,8 @@ func getNonAscii(root string) ([]string, error) { // nonAsciiFiles checks for non-ASCII characters in files within the specified root directory. // It prints a message with the paths to files containing non-ASCII characters, if any. -func NonAsciiFiles(root string) error { - nonAscii, err := getNonAscii(root) +func NonAsciiFiles(root string, localList string) error { + nonAscii, err := getNonAscii(root, localList) if err != nil { slog.Error("getting non-ascii", "err", err) return fmt.Errorf("error getting non-ascii: %w", err)