fix: nested terraform components

This commit is contained in:
Beau 2024-03-22 20:01:12 +00:00
parent bd4221af3e
commit 6c13d2d7f9
No known key found for this signature in database

View File

@ -180,12 +180,6 @@ func discover(ctx context.Context, flags *Flags) ([]repocfg.Component, error) {
if !info.IsDir() && strings.HasSuffix(info.Name(), TF_EXT) { if !info.IsDir() && strings.HasSuffix(info.Name(), TF_EXT) {
logger.Debug(fmt.Sprintf("found .tf file: %s", path)) logger.Debug(fmt.Sprintf("found .tf file: %s", path))
// Add the directory of the Terraform component as the parent
parent, err := filepath.Rel(flags.Root, filepath.Dir(path))
if err != nil {
return err
}
// Each edge should be a path containing Terraform variables files // Each edge should be a path containing Terraform variables files
// relative to the Terraform component // relative to the Terraform component
err = filepath.Walk(filepath.Dir(path), func(subpath string, subinfo os.FileInfo, suberr error) error { err = filepath.Walk(filepath.Dir(path), func(subpath string, subinfo os.FileInfo, suberr error) error {
@ -195,19 +189,23 @@ func discover(ctx context.Context, flags *Flags) ([]repocfg.Component, error) {
// Filter out Terraform variable files // Filter out Terraform variable files
if !subinfo.IsDir() && (strings.HasSuffix(subinfo.Name(), TFVARS_EXT) || strings.HasSuffix(subinfo.Name(), TFVARS_JSON_EXT)) { if !subinfo.IsDir() && (strings.HasSuffix(subinfo.Name(), TFVARS_EXT) || strings.HasSuffix(subinfo.Name(), TFVARS_JSON_EXT)) {
parent := subpath
// Ignore nested Terraform variable files that might belong to nested components // Ignore nested Terraform variable files that might belong to nested components
if filepath.Dir(subpath) != filepath.Dir(path) && tfExistsInDir(filepath.Dir(subpath)) { if filepath.Dir(subpath) != filepath.Dir(path) && !tfExistsInDir(filepath.Dir(subpath)) {
logger.Sugar().Debugf(`ignoring nested %s: %s logger.Sugar().Debugf(`ignoring nested %s: %s
which belongs to the component at: %s which belongs to the component at: %s
not: %s`, filepath.Ext(subpath), subpath, filepath.Dir(subpath), filepath.Dir(path), not: %s`, filepath.Ext(subpath), subpath, filepath.Dir(subpath), filepath.Dir(path),
) )
parent = path
return filepath.SkipDir
} }
logger.Sugar().Debugf("component parent is %s", parent) relParent, err := filepath.Rel(flags.Root, filepath.Dir(parent))
if err != nil {
return err
}
logger.Sugar().Debugf("component parent is %s", relParent)
found := repocfg.Component{ found := repocfg.Component{
Path: parent, Path: relParent,
} }
logger.Sugar().Debugf("found %s file: %s", filepath.Ext(subpath), subpath) logger.Sugar().Debugf("found %s file: %s", filepath.Ext(subpath), subpath)