Skip to content

Commit a7c239e

Browse files
feat:Allow specifying environment using flag for redeploying existing project
1 parent e81ceec commit a7c239e

File tree

6 files changed

+446
-45
lines changed

6 files changed

+446
-45
lines changed

src/adapters/base-class.ts

+37-5
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
fileFrameworkQuery,
2727
createDeploymentMutation,
2828
cmsEnvironmentVariablesQuery,
29+
environmentsQuery
2930
} from '../graphql';
3031
import {
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
*

src/adapters/file-upload.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ export default class FileUpload extends BaseClass {
2626
*/
2727
async run(): Promise<void> {
2828
if (this.config.isExistingProject) {
29-
await this.handleExistingProject();
29+
const environment = await this.getEnvironment();
30+
await this.handleExistingProject(environment);
3031
} else {
3132
await this.handleNewProject();
3233
}
@@ -37,7 +38,7 @@ export default class FileUpload extends BaseClass {
3738
this.showSuggestion();
3839
}
3940

40-
private async handleExistingProject(): Promise<void> {
41+
private async handleExistingProject(environment: string): Promise<void> {
4142
await this.initApolloClient();
4243

4344
let redeployLatest = this.config['redeploy-latest'];
@@ -63,7 +64,7 @@ export default class FileUpload extends BaseClass {
6364
await this.uploadFile(zipName, zipPath, signedUploadUrlData);
6465
}
6566

66-
await this.createNewDeployment(true, uploadUid);
67+
await this.createNewDeployment(true, environment, uploadUid);
6768
}
6869

6970
private async confirmRedeployment(): Promise<void> {

src/adapters/github.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ export default class GitHub extends BaseClass {
2222
*/
2323
async run(): Promise<void> {
2424
if (this.config.isExistingProject) {
25-
await this.handleExistingProject();
25+
const environment = await this.getEnvironment();
26+
await this.handleExistingProject(environment);
2627
} else {
2728
await this.handleNewProject();
2829
}
@@ -33,7 +34,7 @@ export default class GitHub extends BaseClass {
3334
this.showSuggestion();
3435
}
3536

36-
private async handleExistingProject(): Promise<void> {
37+
private async handleExistingProject(environment:string): Promise<void> {
3738
await this.initApolloClient();
3839

3940
const redeployLastUpload = this.config['redeploy-last-upload'];
@@ -48,7 +49,7 @@ export default class GitHub extends BaseClass {
4849
await this.confirmLatestRedeployment();
4950
}
5051

51-
await this.createNewDeployment();
52+
await this.createNewDeployment(false, environment);
5253
}
5354

5455
private async confirmLatestRedeployment(): Promise<void> {

src/commands/launch/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default class Launch extends BaseCommand<typeof Launch> {
1818
'<%= config.bin %> <%= command.id %> --type <options: GitHub|FileUpload>',
1919
'<%= config.bin %> <%= command.id %> --data-dir <path/of/current/working/dir> --type <options: GitHub|FileUpload>',
2020
'<%= config.bin %> <%= command.id %> --data-dir <path/of/current/working/dir> --redeploy-latest',
21-
'<%= config.bin %> <%= command.id %> --data-dir <path/of/current/working/dir> --redeploy-latest --redeploy-last-upload',
21+
'<%= config.bin %> <%= command.id %> --data-dir <path/of/current/working/dir> --redeploy-last-upload',
2222
'<%= config.bin %> <%= command.id %> --config <path/to/launch/config/file> --type <options: GitHub|FileUpload>',
2323
'<%= config.bin %> <%= command.id %> --config <path/to/launch/config/file> --type <options: GitHub|FileUpload> --name=<value> --environment=<value> --branch=<value> --build-command=<value> --framework=<option> --org=<value> --out-dir=<value>',
2424
'<%= config.bin %> <%= command.id %> --config <path/to/launch/config/file> --type <options: GitHub|FileUpload> --name=<value> --environment=<value> --branch=<value> --build-command=<value> --framework=<option> --org=<value> --out-dir=<value> --server-command=<value>',

0 commit comments

Comments
 (0)