@@ -18,7 +18,7 @@ import (
1818
1919// Deployer defines the interface for stack deployment operations
2020type Deployer interface {
21- DeployStack (ctx context.Context , resolvedStack * model.Stack ) error
21+ DeployStack (ctx context.Context , stack * model.Stack ) error
2222 ValidateTemplate (ctx context.Context , templateFile string ) error
2323}
2424
@@ -45,40 +45,40 @@ func NewDefaultDeployer(ctx context.Context) (*AWSDeployer, error) {
4545}
4646
4747// DeployStack deploys a CloudFormation stack using changesets for preview and deployment
48- func (d * AWSDeployer ) DeployStack (ctx context.Context , resolvedStack * model.Stack ) error {
48+ func (d * AWSDeployer ) DeployStack (ctx context.Context , stack * model.Stack ) error {
4949 // Get CloudFormation operations
5050 cfnOps := d .awsClient .NewCloudFormationOperations ()
5151
5252 // Check if stack exists to determine deployment approach
53- exists , err := cfnOps .StackExists (ctx , resolvedStack .Name )
53+ exists , err := cfnOps .StackExists (ctx , stack .Name )
5454 if err != nil {
5555 return fmt .Errorf ("failed to check if stack exists: %w" , err )
5656 }
5757
5858 if ! exists {
5959 // For new stacks, use direct creation (changesets are less useful)
60- return d .deployNewStack (ctx , resolvedStack )
60+ return d .deployNewStack (ctx , stack )
6161 }
6262
6363 // For existing stacks, use changeset approach for preview + deployment
64- return d .deployWithChangeSet (ctx , resolvedStack )
64+ return d .deployWithChangeSet (ctx , stack )
6565}
6666
6767// deployNewStack handles deployment of new stacks using direct creation
68- func (d * AWSDeployer ) deployNewStack (ctx context.Context , resolvedStack * model.Stack ) error {
69- fmt .Printf ("=== Creating new stack %s ===\n " , resolvedStack .Name )
68+ func (d * AWSDeployer ) deployNewStack (ctx context.Context , stack * model.Stack ) error {
69+ fmt .Printf ("=== Creating new stack %s ===\n " , stack .Name )
7070
7171 // Convert parameters to AWS format
72- awsParams := make ([]awsinternal.Parameter , 0 , len (resolvedStack .Parameters ))
73- for key , value := range resolvedStack .Parameters {
72+ awsParams := make ([]awsinternal.Parameter , 0 , len (stack .Parameters ))
73+ for key , value := range stack .Parameters {
7474 awsParams = append (awsParams , awsinternal.Parameter {
7575 Key : key ,
7676 Value : value ,
7777 })
7878 }
7979
8080 // Use capabilities from resolved stack, with default fallback
81- capabilities := resolvedStack .Capabilities
81+ capabilities := stack .Capabilities
8282 if len (capabilities ) == 0 {
8383 capabilities = []string {"CAPABILITY_IAM" } // Default capability
8484 }
@@ -96,10 +96,10 @@ func (d *AWSDeployer) deployNewStack(ctx context.Context, resolvedStack *model.S
9696 }
9797
9898 deployInput := awsinternal.DeployStackInput {
99- StackName : resolvedStack .Name ,
100- TemplateBody : resolvedStack .TemplateBody ,
99+ StackName : stack .Name ,
100+ TemplateBody : stack .TemplateBody ,
101101 Parameters : awsParams ,
102- Tags : resolvedStack .Tags ,
102+ Tags : stack .Tags ,
103103 Capabilities : capabilities ,
104104 }
105105
@@ -112,58 +112,58 @@ func (d *AWSDeployer) deployNewStack(ctx context.Context, resolvedStack *model.S
112112 return fmt .Errorf ("failed to create stack: %w" , err )
113113 }
114114
115- fmt .Printf ("Stack %s create completed successfully\n " , resolvedStack .Name )
115+ fmt .Printf ("Stack %s create completed successfully\n " , stack .Name )
116116 return nil
117117}
118118
119119// deployWithChangeSet handles deployment using changeset preview + execution
120- func (d * AWSDeployer ) deployWithChangeSet (ctx context.Context , resolvedStack * model.Stack ) error {
120+ func (d * AWSDeployer ) deployWithChangeSet (ctx context.Context , stack * model.Stack ) error {
121121 // Create differ for consistent change display
122- fmt .Printf ("=== Calculating changes for stack %s ===\n " , resolvedStack .Name )
122+ fmt .Printf ("=== Calculating changes for stack %s ===\n " , stack .Name )
123123
124124 cfnOps := d .awsClient .NewCloudFormationOperations ()
125125 differ := diff .NewDiffer (cfnOps )
126126
127127 // Generate diff result using the same system as 'stackaroo diff'
128128 diffOptions := diff.Options {Format : "text" }
129- diffResult , err := differ .DiffStack (ctx , resolvedStack , diffOptions )
129+ diffResult , err := differ .DiffStack (ctx , stack , diffOptions )
130130 if err != nil {
131131 return fmt .Errorf ("failed to calculate changes: %w" , err )
132132 }
133133
134134 // Show preview using consistent formatting
135135 if diffResult .HasChanges () {
136- fmt .Printf ("Changes to be applied to stack %s:\n \n " , resolvedStack .Name )
136+ fmt .Printf ("Changes to be applied to stack %s:\n \n " , stack .Name )
137137 fmt .Print (diffResult .String ())
138138 fmt .Println ()
139139 } else {
140- fmt .Printf ("No changes detected for stack %s\n " , resolvedStack .Name )
140+ fmt .Printf ("No changes detected for stack %s\n " , stack .Name )
141141 return nil
142142 }
143143
144144 // Create separate changeset for execution (since differ deletes its changesets)
145145 changeSetMgr := diff .NewChangeSetManager (cfnOps )
146146
147147 // Use capabilities from resolved stack, with default fallback
148- capabilities := resolvedStack .Capabilities
148+ capabilities := stack .Capabilities
149149 if len (capabilities ) == 0 {
150150 capabilities = []string {"CAPABILITY_IAM" } // Default capability
151151 }
152152
153153 changeSetInfo , err := changeSetMgr .CreateChangeSetForDeployment (
154154 ctx ,
155- resolvedStack .Name ,
156- resolvedStack .TemplateBody ,
157- resolvedStack .Parameters ,
155+ stack .Name ,
156+ stack .TemplateBody ,
157+ stack .Parameters ,
158158 capabilities ,
159- resolvedStack .Tags ,
159+ stack .Tags ,
160160 )
161161 if err != nil {
162162 return fmt .Errorf ("failed to create changeset for execution: %w" , err )
163163 }
164164
165165 // Execute the changeset
166- fmt .Printf ("=== Deploying stack %s ===\n " , resolvedStack .Name )
166+ fmt .Printf ("=== Deploying stack %s ===\n " , stack .Name )
167167
168168 executeInput := & cloudformation.ExecuteChangeSetInput {
169169 ChangeSetName : aws .String (changeSetInfo .ChangeSetID ),
@@ -187,15 +187,15 @@ func (d *AWSDeployer) deployWithChangeSet(ctx context.Context, resolvedStack *mo
187187 )
188188 }
189189
190- err = cfnOps .WaitForStackOperation (ctx , resolvedStack .Name , eventCallback )
190+ err = cfnOps .WaitForStackOperation (ctx , stack .Name , eventCallback )
191191 if err != nil {
192192 return fmt .Errorf ("stack deployment failed: %w" , err )
193193 }
194194
195195 // Clean up changeset after successful deployment
196196 _ = changeSetMgr .DeleteChangeSet (ctx , changeSetInfo .ChangeSetID )
197197
198- fmt .Printf ("Stack %s update completed successfully\n " , resolvedStack .Name )
198+ fmt .Printf ("Stack %s update completed successfully\n " , stack .Name )
199199 return nil
200200}
201201
0 commit comments