From a41f21578512ecee07fb918e674fc8156c4592fa Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sun, 14 Aug 2022 16:49:20 -0800 Subject: [PATCH] wip: add --walk flag to gfrun to accept directory --- .github/workflows/cli.yml | 2 +- internal/build/build.go | 80 ++++++++++++++++++++++++++++++--------- 2 files changed, 64 insertions(+), 18 deletions(-) diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index 3b31afc5c0..9b00221b18 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -82,7 +82,7 @@ jobs: chmod +x "${GITHUB_WORKSPACE}/.local/bin/gfmrun" - name: gfmrun - run: go run internal/build/build.go gfmrun docs/v2/manual.md + run: go run internal/build/build.go gfmrun --walk docs/v2/ - name: diff check run: | diff --git a/internal/build/build.go b/internal/build/build.go index d94dae7925..56db8f1f3a 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -60,7 +60,14 @@ func main() { Action: TestActionFunc, }, { - Name: "gfmrun", + Name: "gfmrun", + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "walk", + Value: false, + Usage: "Walk the specified directory and perform validation on all markdown files", + }, + }, Action: GfmrunActionFunc, }, { @@ -220,31 +227,70 @@ func GfmrunActionFunc(cCtx *cli.Context) error { filename = "README.md" } - file, err := os.Open(filename) - if err != nil { - return err + walk := cCtx.Bool("walk") + sources := []string{} + + if walk { + // Walk the directory and find all markdown files. + err := filepath.Walk(top, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + + if info.IsDir() { + return nil + } + + if filepath.Ext(path) != ".md" { + return nil + } + + sources = append(sources, path) + return nil + }) + if err != nil { + return err + } + } else { + sources = append(sources, filename) } - defer file.Close() var counter int - scanner := bufio.NewScanner(file) - for scanner.Scan() { - if strings.Contains(scanner.Text(), "package main") { - counter++ + + for _, src := range sources { + file, err := os.Open(src) + if err != nil { + return err } - } + defer file.Close() - err = file.Close() - if err != nil { - return err + scanner := bufio.NewScanner(file) + for scanner.Scan() { + if strings.Contains(scanner.Text(), "package main") { + counter++ + } + } + + err = file.Close() + if err != nil { + return err + } + + err = scanner.Err() + if err != nil { + return err + } } - err = scanner.Err() - if err != nil { - return err + gfmArgs := []string{ + "--count", + fmt.Sprint(counter), + } + for _, src := range sources { + gfmArgs = append(gfmArgs, "--sources", src) } - if err := runCmd("gfmrun", "-c", fmt.Sprint(counter), "-s", filename); err != nil { + if err := runCmd("gfmrun", gfmArgs...); err != nil { return err }