@@ -26,6 +26,7 @@ import {
2626 fileFrameworkQuery ,
2727 createDeploymentMutation ,
2828 cmsEnvironmentVariablesQuery ,
29+ environmentsQuery
2930} from '../graphql' ;
3031import {
3132 LogFn ,
@@ -85,14 +86,14 @@ export default class BaseClass {
8586 * @return {* } {Promise<void>}
8687 * @memberof GitHub
8788 */
88- async createNewDeployment ( skipGitData = false , uploadUid ?: string ) : Promise < void > {
89+ async createNewDeployment ( skipGitData = false , environment : string , uploadUid ?: string ) : Promise < void > {
8990 const deployment : Record < string , any > = {
90- environment : ( first ( this . config . currentConfig . environments ) as Record < string , any > ) ?. uid ,
91+ environment : environment
9192 } ;
9293
9394 if ( uploadUid ) {
9495 deployment . uploadUid = uploadUid ;
95- }
96+ }
9697
9798 await this . apolloClient
9899 . mutate ( {
@@ -394,7 +395,7 @@ export default class BaseClass {
394395 data . project = this . config . currentConfig ;
395396 }
396397
397- writeFileSync ( this . config . config , JSON . stringify ( data ) , {
398+ writeFileSync ( this . config . config , JSON . stringify ( data , null , 2 ) , {
398399 encoding : 'utf8' ,
399400 flag : 'w' ,
400401 } ) ;
@@ -675,7 +676,7 @@ export default class BaseClass {
675676 } ,
676677 baseUrl : this . config . manageApiBaseUrl ,
677678 } ) . apolloClient ;
678- this . config . environment = ( last ( this . config . currentConfig . environments ) as Record < string , any > ) ?. uid ;
679+ this . config . environment = await this . getEnvironment ( ) ;
679680 this . config . deployment = ( last ( this . config . currentConfig . deployments ) as Record < string , any > ) ?. uid ;
680681 const logs = new LogPolling ( {
681682 config : this . config ,
@@ -744,6 +745,37 @@ export default class BaseClass {
744745 this . exit ( 1 ) ;
745746 }
746747
748+ async getEnvironment ( ) : Promise < any > {
749+ const environmentFlagInput = this . config [ 'environment' ] ;
750+ if ( environmentFlagInput ) {
751+ const environmentList = await this . fetchEnvironments ( ) ;
752+ const isValidEnvironment = environmentList . find ( ( env : any ) => env . name === environmentFlagInput || env . uid === environmentFlagInput ) ;
753+ if ( isValidEnvironment ) {
754+ this . config . environment = isValidEnvironment . uid ;
755+ return isValidEnvironment . uid ;
756+ } else {
757+ this . log ( 'Invalid environment name!' , 'error' ) ;
758+ this . exit ( 1 ) ;
759+ }
760+ }
761+ else {
762+ const defaultEnvironment = ( first ( this . config . currentConfig . environments ) as Record < string , any > ) ?. uid ;
763+ this . config . environment = defaultEnvironment ;
764+ return defaultEnvironment ;
765+ }
766+ }
767+
768+ async fetchEnvironments ( ) : Promise < any > {
769+ try {
770+ const { data } = await this . apolloClient . query ( { query : environmentsQuery } ) ;
771+ const environments = map ( data . Environments . edges , 'node' ) ;
772+ return environments ;
773+ } catch ( error : any ) {
774+ this . log ( error ?. message , 'error' ) ;
775+ process . exit ( 1 ) ;
776+ }
777+ }
778+
747779 /**
748780 * @method showDeploymentUrl - show deployment URL and open it on browser
749781 *
0 commit comments