package cat import ( "bufio" "io" "os" "path" "strings" ) func (c Cater) dir(dir string) error { files, err := os.ReadDir(dir) if err != nil { return err } for _, file := range files { i, err := file.Info() if err != nil { continue } path := path.Join(dir, i.Name()) if !file.IsDir() { c.file(path) } else { c.dir(path) } } return nil } func (c Cater) file(filePath string) error { file, err := os.Open(filePath) if err != nil { return err } defer file.Close() // read file into strings.Builder var sb strings.Builder reader := bufio.NewReader(file) for { line, err := reader.ReadString('\n') if err != nil && err != io.EOF { return err } sb.WriteString(line) if err == io.EOF { break } } c[filePath] = sb.String() return nil }