1- import { DefaultCdkOptions , DeployOptions , DestroyOptions , SynthOptions , ListOptions , StackActivityProgress } from './commands' ;
2- import { exec } from './utils' ;
1+ import { ChildProcess } from 'child_process' ;
2+ import { DefaultCdkOptions , DeployOptions , DestroyOptions , SynthOptions , ListOptions , StackActivityProgress , HotswapMode } from './commands' ;
3+ import { exec , watch } from './utils' ;
34
45/**
56 * AWS CDK CLI operations
@@ -30,6 +31,11 @@ export interface ICdk {
3031 * cdk synth fast
3132 */
3233 synthFast ( options : SynthFastOptions ) : void ;
34+
35+ /**
36+ * cdk watch
37+ */
38+ watch ( options : DeployOptions ) : ChildProcess ;
3339}
3440
3541/**
@@ -176,6 +182,7 @@ export class CdkCliWrapper implements ICdk {
176182 ...options . changeSetName ? [ '--change-set-name' , options . changeSetName ] : [ ] ,
177183 ...options . toolkitStackName ? [ '--toolkit-stack-name' , options . toolkitStackName ] : [ ] ,
178184 ...options . progress ? [ '--progress' , options . progress ] : [ '--progress' , StackActivityProgress . EVENTS ] ,
185+ ...options . deploymentMethod ? [ '--method' , options . deploymentMethod ] : [ ] ,
179186 ...this . createDefaultArguments ( options ) ,
180187 ] ;
181188
@@ -186,6 +193,50 @@ export class CdkCliWrapper implements ICdk {
186193 } ) ;
187194 }
188195
196+ public watch ( options : DeployOptions ) : ChildProcess {
197+ let hotswap : string ;
198+ switch ( options . hotswap ) {
199+ case HotswapMode . FALL_BACK :
200+ hotswap = '--hotswap-fallback' ;
201+ break ;
202+ case HotswapMode . HOTSWAP_ONLY :
203+ hotswap = '--hotswap' ;
204+ break ;
205+ default :
206+ hotswap = '--hotswap-fallback' ;
207+ break ;
208+ }
209+ const deployCommandArgs : string [ ] = [
210+ '--watch' ,
211+ ...renderBooleanArg ( 'ci' , options . ci ) ,
212+ ...renderBooleanArg ( 'execute' , options . execute ) ,
213+ ...renderBooleanArg ( 'exclusively' , options . exclusively ) ,
214+ ...renderBooleanArg ( 'force' , options . force ) ,
215+ ...renderBooleanArg ( 'previous-parameters' , options . usePreviousParameters ) ,
216+ ...renderBooleanArg ( 'rollback' , options . rollback ) ,
217+ ...renderBooleanArg ( 'staging' , options . staging ) ,
218+ ...renderBooleanArg ( 'logs' , options . traceLogs ) ,
219+ hotswap ,
220+ ...options . reuseAssets ? renderArrayArg ( '--reuse-assets' , options . reuseAssets ) : [ ] ,
221+ ...options . notificationArns ? renderArrayArg ( '--notification-arns' , options . notificationArns ) : [ ] ,
222+ ...options . parameters ? renderMapArrayArg ( '--parameters' , options . parameters ) : [ ] ,
223+ ...options . outputsFile ? [ '--outputs-file' , options . outputsFile ] : [ ] ,
224+ ...options . requireApproval ? [ '--require-approval' , options . requireApproval ] : [ ] ,
225+ ...options . changeSetName ? [ '--change-set-name' , options . changeSetName ] : [ ] ,
226+ ...options . toolkitStackName ? [ '--toolkit-stack-name' , options . toolkitStackName ] : [ ] ,
227+ ...options . progress ? [ '--progress' , options . progress ] : [ '--progress' , StackActivityProgress . EVENTS ] ,
228+ ...options . deploymentMethod ? [ '--method' , options . deploymentMethod ] : [ ] ,
229+ ...this . createDefaultArguments ( options ) ,
230+ ] ;
231+
232+ return watch ( [ this . cdk , 'deploy' , ...deployCommandArgs ] , {
233+ cwd : this . directory ,
234+ verbose : this . showOutput ,
235+ env : this . env ,
236+ } ) ;
237+
238+ }
239+
189240 /**
190241 * cdk destroy
191242 */
0 commit comments