@@ -64,6 +64,7 @@ func RunCommandsPerProject(commandsPerProject []ProjectCommand, repoOwner string
6464 projectCommands .ProjectName ,
6565 projectCommands .ProjectDir ,
6666 repoName ,
67+ projectCommands .Terragrunt ,
6768 prManager ,
6869 projectLock ,
6970 diggerConfig ,
@@ -104,6 +105,7 @@ type ProjectCommand struct {
104105 ProjectName string
105106 ProjectDir string
106107 ProjectWorkspace string
108+ Terragrunt bool
107109 Commands []string
108110}
109111
@@ -119,20 +121,23 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []Project
119121 ProjectName : project .Name ,
120122 ProjectDir : project .Dir ,
121123 ProjectWorkspace : project .Workspace ,
124+ Terragrunt : project .Terragrunt ,
122125 Commands : project .WorkflowConfiguration .OnCommitToDefault ,
123126 })
124127 } else if event .Action == "opened" || event .Action == "reopened" || event .Action == "synchronize" {
125128 commandsPerProject = append (commandsPerProject , ProjectCommand {
126129 ProjectName : project .Name ,
127130 ProjectDir : project .Dir ,
128131 ProjectWorkspace : project .Workspace ,
132+ Terragrunt : project .Terragrunt ,
129133 Commands : project .WorkflowConfiguration .OnPullRequestPushed ,
130134 })
131135 } else if event .Action == "closed" {
132136 commandsPerProject = append (commandsPerProject , ProjectCommand {
133137 ProjectName : project .Name ,
134138 ProjectDir : project .Dir ,
135139 ProjectWorkspace : project .Workspace ,
140+ Terragrunt : project .Terragrunt ,
136141 Commands : project .WorkflowConfiguration .OnPullRequestClosed ,
137142 })
138143 }
@@ -157,6 +162,7 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []Project
157162 ProjectName : project .Name ,
158163 ProjectDir : project .Dir ,
159164 ProjectWorkspace : workspace ,
165+ Terragrunt : project .Terragrunt ,
160166 Commands : []string {command },
161167 })
162168 }
@@ -203,6 +209,7 @@ type DiggerExecutor struct {
203209 projectName string
204210 projectDir string
205211 repoName string
212+ terragrunt bool
206213 prManager github.PullRequestManager
207214 lock utils.ProjectLock
208215 configDigger * DiggerConfig
@@ -214,7 +221,13 @@ func (d DiggerExecutor) LockId() string {
214221
215222func (d DiggerExecutor ) Plan (prNumber int ) {
216223
217- terraformExecutor := terraform.Terraform {WorkingDir : path .Join (d .workingDir , d .projectDir ), Workspace : d .workspace }
224+ var terraformExecutor terraform.TerraformExecutor
225+
226+ if d .terragrunt {
227+ terraformExecutor = terraform.Terragrunt {WorkingDir : path .Join (d .workingDir , d .projectDir )}
228+ } else {
229+ terraformExecutor = terraform.Terraform {WorkingDir : path .Join (d .workingDir , d .projectDir ), Workspace : d .workspace }
230+ }
218231
219232 res , err := d .lock .Lock (d .LockId (), prNumber )
220233 if err != nil {
@@ -234,7 +247,14 @@ func (d DiggerExecutor) Plan(prNumber int) {
234247}
235248
236249func (d DiggerExecutor ) Apply (prNumber int ) {
237- terraformExecutor := terraform.Terraform {WorkingDir : path .Join (d .workingDir , d .projectDir ), Workspace : d .workspace }
250+ var terraformExecutor terraform.TerraformExecutor
251+
252+ if d .terragrunt {
253+ terraformExecutor = terraform.Terragrunt {WorkingDir : path .Join (d .workingDir , d .projectDir )}
254+ } else {
255+ terraformExecutor = terraform.Terraform {WorkingDir : path .Join (d .workingDir , d .projectDir ), Workspace : d .workspace }
256+ }
257+
238258 if res , _ := d .lock .Lock (d .LockId (), prNumber ); res {
239259 stdout , stderr , err := terraformExecutor .Apply ()
240260 applyOutput := cleanupTerraformApply (true , err , stdout , stderr )
0 commit comments