func getDirPaths()

in cli/bpmetadata/path.go [47:83]


func getDirPaths(configPath string, re *regexp.Regexp) ([]*BlueprintMiscContent, error) {
	paths := []*BlueprintMiscContent{}
	err := filepath.Walk(configPath, func(path string, info fs.FileInfo, err error) error {
		if err != nil {
			return fmt.Errorf("error accessing examples in the path %q: %w", configPath, err)
		}

		// skip if this is a .terraform dir
		if info.IsDir() && strings.HasPrefix(info.Name(), ".terraform") {
			return filepath.SkipDir
		}

		// only interested if it has a TF config
		if !info.IsDir() && strings.HasSuffix(info.Name(), ".tf") {
			d := filepath.Dir(path)
			if l := trimPath(d, re); l != "" {
				dirPath := &BlueprintMiscContent{
					Name:     filepath.Base(d),
					Location: l,
				}

				paths = append(paths, dirPath)
			}
			return filepath.SkipDir
		}

		return nil
	})

	if err != nil {
		return nil, fmt.Errorf("error accessing examples in the path %q: %w", configPath, err)
	}

	// Sort by configPath name before returning
	sort.SliceStable(paths, func(i, j int) bool { return paths[i].Name < paths[j].Name })
	return paths, nil
}