@@ -76,6 +76,8 @@ func RunCommandsPerProject(
7676 plansToPublish := make ([]string , 0 )
7777 for _ , projectCommands := range commandsPerProject {
7878 for _ , command := range projectCommands .Commands {
79+ fmt .Printf ("Running '%s' for project '%s'\n " , command , projectCommands .ProjectName )
80+
7981 policyInput := map [string ]interface {}{"user" : requestedBy , "action" : command }
8082
8183 allowedToPerformCommand , err := policyChecker .Check (projectNamespace , projectCommands .ProjectName , policyInput )
@@ -124,14 +126,24 @@ func RunCommandsPerProject(
124126 projectLock ,
125127 planStorage ,
126128 }
129+
127130 switch command {
128131 case "digger plan" :
129- usage .SendUsageRecord (requestedBy , eventName , "plan" )
130- ciService .SetStatus (prNumber , "pending" , projectCommands .ProjectName + "/plan" )
132+ err := usage .SendUsageRecord (requestedBy , eventName , "plan" )
133+ if err != nil {
134+ return false , false , fmt .Errorf ("failed to send usage report. %v" , err )
135+ }
136+ err = ciService .SetStatus (prNumber , "pending" , projectCommands .ProjectName + "/plan" )
137+ if err != nil {
138+ return false , false , fmt .Errorf ("failed to set PR status. %v" , err )
139+ }
131140 planPerformed , plan , err := diggerExecutor .Plan ()
132141 if err != nil {
133142 log .Printf ("Failed to run digger plan command. %v" , err )
134- ciService .SetStatus (prNumber , "failure" , projectCommands .ProjectName + "/plan" )
143+ err := ciService .SetStatus (prNumber , "failure" , projectCommands .ProjectName + "/plan" )
144+ if err != nil {
145+ return false , false , fmt .Errorf ("failed to set PR status. %v" , err )
146+ }
135147 return false , false , fmt .Errorf ("failed to run digger plan command. %v" , err )
136148 } else if planPerformed {
137149 if plan != "" {
@@ -145,45 +157,73 @@ func RunCommandsPerProject(
145157 }
146158 }
147159 }
148- ciService .SetStatus (prNumber , "success" , projectCommands .ProjectName + "/plan" )
160+ err := ciService .SetStatus (prNumber , "success" , projectCommands .ProjectName + "/plan" )
161+ if err != nil {
162+ return false , false , fmt .Errorf ("failed to set PR status. %v" , err )
163+ }
149164 }
150165 case "digger apply" :
151166 appliesPerProject [projectCommands .ProjectName ] = false
152- usage .SendUsageRecord (requestedBy , eventName , "apply" )
153- ciService .SetStatus (prNumber , "pending" , projectCommands .ProjectName + "/apply" )
167+ err := usage .SendUsageRecord (requestedBy , eventName , "apply" )
168+ if err != nil {
169+ return false , false , fmt .Errorf ("failed to send usage report. %v" , err )
170+ }
171+ err = ciService .SetStatus (prNumber , "pending" , projectCommands .ProjectName + "/apply" )
172+ if err != nil {
173+ return false , false , fmt .Errorf ("failed to set PR status. %v" , err )
174+ }
175+
176+ isMerged , err := ciService .IsMerged (prNumber )
177+ if err != nil {
178+ return false , false , fmt .Errorf ("error checking if PR is merged: %v" , err )
179+ }
154180
155181 // this might go into some sort of "appliability" plugin later
156182 isMergeable , err := ciService .IsMergeable (prNumber )
157183 if err != nil {
158184 return false , false , fmt .Errorf ("error validating is PR is mergeable: %v" , err )
159185 }
160- if ! isMergeable {
186+ fmt .Printf ("PR status, mergeable: %v, merged: %v\n " , isMergeable , isMerged )
187+ if ! isMergeable && ! isMerged {
161188 comment := "Cannot perform Apply since the PR is not currently mergeable."
189+ fmt .Println (comment )
162190 err = ciService .PublishComment (prNumber , comment )
163191 if err != nil {
164- fmt .Printf ("error publishing comment: %v" , err )
192+ fmt .Printf ("error publishing comment: %v\n " , err )
165193 }
166194 return false , false , nil
167195 } else {
168196 applyPerformed , err := diggerExecutor .Apply ()
169197 if err != nil {
170198 log .Printf ("Failed to run digger apply command. %v" , err )
171- ciService .SetStatus (prNumber , "failure" , projectCommands .ProjectName + "/apply" )
199+ err := ciService .SetStatus (prNumber , "failure" , projectCommands .ProjectName + "/apply" )
200+ if err != nil {
201+ return false , false , fmt .Errorf ("failed to set PR status. %v" , err )
202+ }
172203 return false , false , fmt .Errorf ("failed to run digger apply command. %v" , err )
173204 } else if applyPerformed {
174- ciService .SetStatus (prNumber , "success" , projectCommands .ProjectName + "/apply" )
205+ err := ciService .SetStatus (prNumber , "success" , projectCommands .ProjectName + "/apply" )
206+ if err != nil {
207+ return false , false , fmt .Errorf ("failed to set PR status. %v" , err )
208+ }
175209 appliesPerProject [projectCommands .ProjectName ] = true
176210 }
177211 }
178212 case "digger unlock" :
179- usage .SendUsageRecord (requestedBy , eventName , "unlock" )
180- err := diggerExecutor .Unlock ()
213+ err := usage .SendUsageRecord (requestedBy , eventName , "unlock" )
214+ if err != nil {
215+ return false , false , fmt .Errorf ("failed to send usage report. %v" , err )
216+ }
217+ err = diggerExecutor .Unlock ()
181218 if err != nil {
182219 return false , false , fmt .Errorf ("failed to unlock project. %v" , err )
183220 }
184221 case "digger lock" :
185- usage .SendUsageRecord (requestedBy , eventName , "lock" )
186- err := diggerExecutor .Lock ()
222+ err := usage .SendUsageRecord (requestedBy , eventName , "lock" )
223+ if err != nil {
224+ return false , false , fmt .Errorf ("failed to send usage report. %v" , err )
225+ }
226+ err = diggerExecutor .Lock ()
187227 if err != nil {
188228 return false , false , fmt .Errorf ("failed to lock project. %v" , err )
189229 }
0 commit comments