@@ -26,6 +26,7 @@ import {
26
26
fileFrameworkQuery ,
27
27
createDeploymentMutation ,
28
28
cmsEnvironmentVariablesQuery ,
29
+ environmentsQuery
29
30
} from '../graphql' ;
30
31
import {
31
32
LogFn ,
@@ -85,14 +86,14 @@ export default class BaseClass {
85
86
* @return {* } {Promise<void>}
86
87
* @memberof GitHub
87
88
*/
88
- async createNewDeployment ( skipGitData = false , uploadUid ?: string ) : Promise < void > {
89
+ async createNewDeployment ( skipGitData = false , environment : string , uploadUid ?: string ) : Promise < void > {
89
90
const deployment : Record < string , any > = {
90
- environment : ( first ( this . config . currentConfig . environments ) as Record < string , any > ) ?. uid ,
91
+ environment : environment
91
92
} ;
92
93
93
94
if ( uploadUid ) {
94
95
deployment . uploadUid = uploadUid ;
95
- }
96
+ }
96
97
97
98
await this . apolloClient
98
99
. mutate ( {
@@ -394,7 +395,7 @@ export default class BaseClass {
394
395
data . project = this . config . currentConfig ;
395
396
}
396
397
397
- writeFileSync ( this . config . config , JSON . stringify ( data ) , {
398
+ writeFileSync ( this . config . config , JSON . stringify ( data , null , 2 ) , {
398
399
encoding : 'utf8' ,
399
400
flag : 'w' ,
400
401
} ) ;
@@ -675,7 +676,7 @@ export default class BaseClass {
675
676
} ,
676
677
baseUrl : this . config . manageApiBaseUrl ,
677
678
} ) . apolloClient ;
678
- this . config . environment = ( last ( this . config . currentConfig . environments ) as Record < string , any > ) ?. uid ;
679
+ this . config . environment = await this . getEnvironment ( ) ;
679
680
this . config . deployment = ( last ( this . config . currentConfig . deployments ) as Record < string , any > ) ?. uid ;
680
681
const logs = new LogPolling ( {
681
682
config : this . config ,
@@ -744,6 +745,37 @@ export default class BaseClass {
744
745
this . exit ( 1 ) ;
745
746
}
746
747
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
+
747
779
/**
748
780
* @method showDeploymentUrl - show deployment URL and open it on browser
749
781
*
0 commit comments