@@ -2,13 +2,14 @@ package atlantis
22
33import (
44 "context"
5+ "regexp"
6+ "sort"
7+
58 "github.com/gruntwork-io/terragrunt/cli/commands/terraform"
69 "github.com/gruntwork-io/terragrunt/config"
710 "github.com/gruntwork-io/terragrunt/options"
811 "golang.org/x/sync/errgroup"
912 "golang.org/x/sync/semaphore"
10- "regexp"
11- "sort"
1213
1314 "github.com/hashicorp/go-getter"
1415 log "github.com/sirupsen/logrus"
@@ -693,7 +694,7 @@ func Parse(gitRoot string, projectHclFiles []string, createHclProjectExternalChi
693694 ctx := context .Background ()
694695 errGroup , _ := errgroup .WithContext (ctx )
695696 sem := semaphore .NewWeighted (10 )
696- potentialProjectDependencies := make ( map [ string ][] string )
697+ projectDependenciesMap := sync. Map {}
697698 for _ , workingDir := range workingDirs {
698699 terragruntFiles , err := getAllTerragruntFiles (filterPath , projectHclFiles , workingDir )
699700 if err != nil {
@@ -734,7 +735,7 @@ func Parse(gitRoot string, projectHclFiles []string, createHclProjectExternalChi
734735 return nil
735736 }
736737
737- potentialProjectDependencies [ project .Name ] = projDeps
738+ projectDependenciesMap . Store ( project .Name , projDeps )
738739
739740 // Lock the list as only one goroutine should be writing to atlantisConfig.Projects at a time
740741 lock .Lock ()
@@ -864,19 +865,21 @@ func Parse(gitRoot string, projectHclFiles []string, createHclProjectExternalChi
864865
865866 dependsOn := make (map [string ][]string )
866867
867- for projectName , dependencies := range potentialProjectDependencies {
868- for _ , dep := range dependencies {
869- _ , ok := potentialProjectDependencies [dep ]
868+ projectDependenciesMap .Range (func (projectName , dependencies interface {}) bool {
869+ project := projectName .(string )
870+ for _ , dep := range dependencies .([]string ) {
871+ _ , ok := projectDependenciesMap .Load (dep )
870872 if ok {
871- deps , ok := dependsOn [projectName ]
873+ deps , ok := dependsOn [project ]
872874 if ok {
873- dependsOn [projectName ] = append (deps , dep )
875+ dependsOn [project ] = append (deps , dep )
874876 } else {
875- dependsOn [projectName ] = []string {dep }
877+ dependsOn [project ] = []string {dep }
876878 }
877879 }
878880 }
879- }
881+ return true
882+ })
880883
881884 return & atlantisConfig , dependsOn , nil
882885}
0 commit comments