diff --git a/kg/main.go b/kg/main.go index c5b8397..a6c471d 100644 --- a/kg/main.go +++ b/kg/main.go @@ -5,7 +5,9 @@ import ( "flag" "fmt" "io" + "io/fs" "os" + "path/filepath" "slices" "github.com/fatih/color" @@ -101,7 +103,24 @@ func main() { os.Exit(2) } else { if fileStat.Mode().IsDir() { - fmt.Printf("%s: %s: Is a directory\n", os.Args[0], inputFilename) + if *recursiveFlag { + // Walk the directory and open every file in it. Add each file to the filelist. + filepath.WalkDir(inputFilename, func(filename string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if !d.IsDir() { + f, err := os.Open(filename) + if err != nil { + return err + } + inputFiles = append(inputFiles, f) + } + return nil + }) + } else { + fmt.Printf("%s: %s: Is a directory\n", os.Args[0], inputFilename) + } } else { var nullCharPresent bool if nullCharPresent, err = fileContainsNullChar(inputFilename); nullCharPresent {