@@ -21,7 +21,7 @@ const {
2121 Clone,
2222 HandleBranchCommand,
2323} = require ( '../helpers/command-helpers' ) ;
24- const { configHandler } = require ( '@contentstack/cli-utilities' ) ;
24+ const { configHandler, getBranchFromAlias } = require ( '@contentstack/cli-utilities' ) ;
2525
2626let client = { } ;
2727let config ;
@@ -137,16 +137,24 @@ class CloneHandler {
137137 let spinner ;
138138 try {
139139 const stackAPIClient = client . stack ( {
140- api_key : config . target_stack ? config . target_stack : config . source_stack ,
140+ api_key : isSource ? config . source_stack : config . target_stack ,
141141 management_token : config . management_token ,
142142 } ) ;
143143
144+ if ( ! config . sourceStackBranch && config . sourceStackBranchAlias ) {
145+ await this . resolveBranchAliases ( true ) ;
146+ return resolve ( ) ;
147+ }
144148 // NOTE validate if source branch is exist
145149 if ( isSource && config . sourceStackBranch ) {
146150 await this . validateIfBranchExist ( stackAPIClient , true ) ;
147151 return resolve ( ) ;
148152 }
149153
154+ if ( ! config . targetStackBranch && config . targetStackBranchAlias ) {
155+ await this . resolveBranchAliases ( ) ;
156+ return resolve ( ) ;
157+ }
150158 // NOTE Validate target branch is exist
151159 if ( ! isSource && config . targetStackBranch ) {
152160 await this . validateIfBranchExist ( stackAPIClient , false ) ;
@@ -272,6 +280,8 @@ class CloneHandler {
272280 return reject ( 'Org not found.' ) ;
273281 }
274282 } else {
283+ this . setExectingCommand ( 2 ) ;
284+ await this . handleBranchSelection ( { api_key : config . sourceStack } ) ;
275285 const exportRes = await cloneCommand . execute ( new HandleExportCommand ( null , this ) ) ;
276286 await cloneCommand . execute ( new SetBranchCommand ( null , this ) ) ;
277287
@@ -471,7 +481,7 @@ class CloneHandler {
471481 } else {
472482 organizations = await client . organization ( ) . fetchAll ( { limit : 100 } ) ;
473483 }
474-
484+
475485 spinner . succeed ( 'Fetched Organization' ) ;
476486 for ( const element of organizations . items || [ organizations ] ) {
477487 orgUidList [ element . name ] = element . uid ;
@@ -579,6 +589,20 @@ class CloneHandler {
579589 } ) ;
580590 }
581591
592+ async resolveBranchAliases ( isSource = false ) {
593+ try {
594+ if ( isSource ) {
595+ const sourceStack = client . stack ( { api_key : config . source_stack } ) ;
596+ config . sourceStackBranch = await getBranchFromAlias ( sourceStack , config . sourceStackBranchAlias ) ;
597+ } else {
598+ const targetStack = client . stack ( { api_key : config . target_stack } ) ;
599+ config . targetStackBranch = await getBranchFromAlias ( targetStack , config . targetStackBranchAlias ) ;
600+ }
601+ } catch ( error ) {
602+ throw error ;
603+ }
604+ }
605+
582606 async cloneTypeSelection ( ) {
583607 console . clear ( ) ;
584608 return new Promise ( async ( resolve , reject ) => {
0 commit comments