11param (
22 [string ]$RunTerraformInit = " true" ,
33 [string ]$RunTerraformValidate = " true" ,
4- [string ]$RunTerraformPlan = " true " ,
5- [string ]$RunTerraformPlanDestroy = " false " ,
4+ [string ]$RunTerraformPlan = " false " ,
5+ [string ]$RunTerraformPlanDestroy = " true " ,
66 [string ]$RunTerraformApply = " false" ,
77 [string ]$RunTerraformDestroy = " false" ,
8- [string ]$TerraformInitExtraArgsJson = ' []' ,
8+ [string ]$TerraformInitExtraArgsJson = ' ["-reconfigure", "-upgrade" ]' ,
99 [string ]$TerraformInitCreateBackendStateFileName = " true" ,
1010 [string ]$TerraformInitCreateBackendStateFilePrefix = " " ,
1111 [string ]$TerraformInitCreateBackendStateFileSuffix = " " ,
@@ -18,19 +18,19 @@ param (
1818 [string ]$DebugMode = " false" ,
1919 [string ]$DeletePlanFiles = " true" ,
2020 [string ]$InstallCheckov = " false" ,
21- [string ]$RunCheckov = " true " ,
21+ [string ]$RunCheckov = " false " ,
2222 [string ]$CheckovSkipCheck = " CKV2_AZURE_31" ,
2323 [string ]$CheckovSoftfail = " true" ,
2424 [string ]$CheckovExtraArgsJson = ' []' ,
2525 [string ]$TerraformPlanFileName = " tfplan.plan" ,
2626 [string ]$TerraformDestroyPlanFileName = " tfplan-destroy.plan" ,
27- [string ]$TerraformCodeLocation = " terraform " ,
28- [string ]$TerraformStackToRunJson = ' ["all "]' , # JSON format Use 'all' to run 0_, 1_, etc and destroy in reverse order 1_, 0_ etc
27+ [string ]$TerraformCodeLocation = " examples " ,
28+ [string ]$TerraformStackToRunJson = ' ["module-development "]' , # JSON format Use 'all' to run 0_, 1_, etc and destroy in reverse order 1_, 0_ etc
2929 [string ]$CreateTerraformWorkspace = " true" ,
3030 [string ]$TerraformWorkspace = " dev" ,
31- [string ]$InstallAzureCli = " false " ,
32- [string ]$UseAzureServiceConnection = " false " ,
33- [string ]$AttemptAzureLogin = " true " ,
31+ [string ]$InstallAzureCli = " falFnse " ,
32+ [string ]$UseAzureServiceConnection = " true " ,
33+ [string ]$AttemptAzureLogin = " false " ,
3434 [string ]$UseAzureClientSecretLogin = " false" ,
3535 [string ]$UseAzureOidcLogin = " false" ,
3636 [string ]$UseAzureUserLogin = " true" ,
@@ -250,26 +250,29 @@ try
250250 - StacksToRun $TerraformStackToRun
251251
252252 # ──────────────────── REVERSE execution order for destroys ────────────────
253- if ($convertedRunTerraformPlanDestroy -or $convertedRunTerraformDestroy )
254- {
253+ if ($convertedRunTerraformPlanDestroy -or $convertedRunTerraformDestroy ) {
254+ _LogMessage - Level ' DEBUG' - Message " Begin reverse‐order logic for destroy" - InvocationName $MyInvocation.MyCommand.Name
255+ _LogMessage - Level ' DEBUG' - Message " Original stackFolders: $ ( $stackFolders -join ' , ' ) " - InvocationName $MyInvocation.MyCommand.Name
255256
256- # 1. sort numerically by the leading digits in the folder name
257- $stackFolders = $stackFolders |
258- Sort-Object {
259- # “C:\...\1_network” → 1
260- [int ](
261- (($_ -split ' [\\/]' )[-1 ]) -replace ' ^(\d+)_.*' , ' $1'
262- )
263- }
257+ # Pick out those folders whose name starts with digits_, sort them descending by that leading number
258+ $numericFolders = $stackFolders |
259+ Where-Object { ($_ -split ' [\\/]+' )[-1 ] -match ' ^\d+_' } |
260+ Sort-Object { [int ](($_ -split ' [\\/]+' )[-1 ] -replace ' ^(\d+)_.*' , ' $1' ) } - Descending
261+
262+ # Everything else stays in original order
263+ $otherFolders = $stackFolders | Where-Object { $_ -notin $numericFolders }
264+
265+ # Recombine
266+ $stackFolders = $numericFolders + $otherFolders
264267
265- # 2. reverse (static .NET call – do **not** pipe this!)
266- [array ]::Reverse($stackFolders )
268+ _LogMessage - Level ' DEBUG' - Message " Reordered stackFolders: $ ( $stackFolders -join ' , ' ) " - InvocationName $MyInvocation.MyCommand.Name
267269 }
268270
271+
269272 foreach ($folder in $stackFolders )
270273 {
271274 $processedStacks += $folder
272- _LogMessage - Level ' INFO' - Message " Resolved stack folders: $ ( $stackFolders -join ' , ' ) " - InvocationName $MyInvocation.MyCommand.Name
275+ _LogMessage - Level ' INFO' - Message " Resolved stack folders: $ ( $stackFolders -join ' , ' ) " - InvocationName $MyInvocation.MyCommand.Name
273276
274277 # terraform fmt – always safe
275278 Invoke-TerraformFmtCheck - CodePath $folder
@@ -334,10 +337,10 @@ try
334337 $TfPlanFileName = $TerraformDestroyPlanFileName
335338 }
336339
337- Convert-TerraformPlanToJson - CodePath $folder - PlanFile $TfPlanFileName
338-
339340 if ($convertedRunCheckov -and $convertedRunTerraformPlan )
340341 {
342+ Convert-TerraformPlanToJson - CodePath $folder - PlanFile $TfPlanFileName
343+
341344 Invoke-Checkov `
342345 - CodePath $folder `
343346 - CheckovSkipChecks $CheckovSkipCheck `
0 commit comments