@@ -60,7 +60,14 @@ func main() {
60
60
Action : TestActionFunc ,
61
61
},
62
62
{
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
+ },
64
71
Action : GfmrunActionFunc ,
65
72
},
66
73
{
@@ -220,31 +227,70 @@ func GfmrunActionFunc(cCtx *cli.Context) error {
220
227
filename = "README.md"
221
228
}
222
229
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 )
226
256
}
227
- defer file .Close ()
228
257
229
258
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
234
264
}
235
- }
265
+ defer file . Close ()
236
266
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
+ }
240
283
}
241
284
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 )
245
291
}
246
292
247
- if err := runCmd ("gfmrun" , "-c" , fmt . Sprint ( counter ), "-s" , filename ); err != nil {
293
+ if err := runCmd ("gfmrun" , gfmArgs ... ); err != nil {
248
294
return err
249
295
}
250
296
0 commit comments