diff --git a/cmd/atlas/internal/cmdext/reader.go b/cmd/atlas/internal/cmdext/reader.go index 1d27a2fa974..c52a5d059b3 100644 --- a/cmd/atlas/internal/cmdext/reader.go +++ b/cmd/atlas/internal/cmdext/reader.go @@ -313,18 +313,22 @@ func parseHCLPaths(paths ...string) (*hclparse.Parser, error) { case err != nil: return nil, err case stat.IsDir(): - dir, err := os.ReadDir(path) - if err != nil { - return nil, err - } - for _, f := range dir { - // Skip nested dirs. - if f.IsDir() { - continue + err := filepath.Walk(path, func(fp string, info os.FileInfo, err error) error { + if err != nil { + return err } - if err := mayParse(p, filepath.Join(path, f.Name())); err != nil { - return nil, err + if info.IsDir() { + return nil } + if filepath.Ext(fp) == FileTypeHCL || strings.HasSuffix(fp, FileTypeTest) { + if err := mayParse(p, fp); err != nil { + return err + } + } + return nil + }) + if err != nil { + return nil, err } default: if err := mayParse(p, path); err != nil {