Skip to content

Commit a41f215

Browse files
committed
wip: add --walk flag to gfrun to accept directory
1 parent dac1c40 commit a41f215

File tree

2 files changed

+64
-18
lines changed

2 files changed

+64
-18
lines changed

.github/workflows/cli.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ jobs:
8282
chmod +x "${GITHUB_WORKSPACE}/.local/bin/gfmrun"
8383
8484
- name: gfmrun
85-
run: go run internal/build/build.go gfmrun docs/v2/manual.md
85+
run: go run internal/build/build.go gfmrun --walk docs/v2/
8686

8787
- name: diff check
8888
run: |

internal/build/build.go

+63-17
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,14 @@ func main() {
6060
Action: TestActionFunc,
6161
},
6262
{
63-
Name: "gfmrun",
63+
Name: "gfmrun",
64+
Flags: []cli.Flag{
65+
&cli.BoolFlag{
66+
Name: "walk",
67+
Value: false,
68+
Usage: "Walk the specified directory and perform validation on all markdown files",
69+
},
70+
},
6471
Action: GfmrunActionFunc,
6572
},
6673
{
@@ -220,31 +227,70 @@ func GfmrunActionFunc(cCtx *cli.Context) error {
220227
filename = "README.md"
221228
}
222229

223-
file, err := os.Open(filename)
224-
if err != nil {
225-
return err
230+
walk := cCtx.Bool("walk")
231+
sources := []string{}
232+
233+
if walk {
234+
// Walk the directory and find all markdown files.
235+
err := filepath.Walk(top, func(path string, info os.FileInfo, err error) error {
236+
if err != nil {
237+
return err
238+
}
239+
240+
if info.IsDir() {
241+
return nil
242+
}
243+
244+
if filepath.Ext(path) != ".md" {
245+
return nil
246+
}
247+
248+
sources = append(sources, path)
249+
return nil
250+
})
251+
if err != nil {
252+
return err
253+
}
254+
} else {
255+
sources = append(sources, filename)
226256
}
227-
defer file.Close()
228257

229258
var counter int
230-
scanner := bufio.NewScanner(file)
231-
for scanner.Scan() {
232-
if strings.Contains(scanner.Text(), "package main") {
233-
counter++
259+
260+
for _, src := range sources {
261+
file, err := os.Open(src)
262+
if err != nil {
263+
return err
234264
}
235-
}
265+
defer file.Close()
236266

237-
err = file.Close()
238-
if err != nil {
239-
return err
267+
scanner := bufio.NewScanner(file)
268+
for scanner.Scan() {
269+
if strings.Contains(scanner.Text(), "package main") {
270+
counter++
271+
}
272+
}
273+
274+
err = file.Close()
275+
if err != nil {
276+
return err
277+
}
278+
279+
err = scanner.Err()
280+
if err != nil {
281+
return err
282+
}
240283
}
241284

242-
err = scanner.Err()
243-
if err != nil {
244-
return err
285+
gfmArgs := []string{
286+
"--count",
287+
fmt.Sprint(counter),
288+
}
289+
for _, src := range sources {
290+
gfmArgs = append(gfmArgs, "--sources", src)
245291
}
246292

247-
if err := runCmd("gfmrun", "-c", fmt.Sprint(counter), "-s", filename); err != nil {
293+
if err := runCmd("gfmrun", gfmArgs...); err != nil {
248294
return err
249295
}
250296

0 commit comments

Comments
 (0)