Skip to content

Commit 6ef6e7d

Browse files
committed
feat: move to async deployment
1 parent 76f40a0 commit 6ef6e7d

File tree

12 files changed

+59
-68
lines changed

12 files changed

+59
-68
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,5 @@ omnistudio_migration
4747

4848
assessment_reports/
4949
migration_report/
50-
.sfdx/
50+
.sfdx/
51+
package.xml

messages/migrate.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,12 @@
203203
"installingDependency": "Installing node dependency %s",
204204
"dependencyInstalled": "Node dependency %s installed",
205205
"deployingFromManifest": "Deploying from metadata packages",
206-
"manifestDeployed": "Metadata packages are deployed",
206+
"manifestDeployFailed": "Metadata packages deployment failed, check logs or status for more details",
207207
"installingRequiredDependencies": "Installing required node dependencies",
208208
"creatingNPMConfigFile": "Creating npm config file",
209209
"npmConfigFileCreated": "Npm config file created",
210210
"authKeyEnvVarNotSet": "OMA_AUTH_KEY environment variable is not set, LWCs will not be deployed",
211-
"experienceSiteException": "Exception occurred while processing experience sites"
211+
"experienceSiteException": "Exception occurred while processing experience sites",
212+
"noMetadataToDeploy": "No metadata to deploy",
213+
"manifestDeployementStarted": "Manifest deployment started with id: %s"
212214
}

src/commands/omnistudio/migration/migrate.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ export default class Migrate extends OmniStudioBaseCommand {
215215
deploymentConfig.autoDeploy && deploymentConfig.authKey ? relatedObjectMigrationResult.lwcAssessmentInfos : [],
216216
relatedObjectMigrationResult.experienceSiteAssessmentInfos,
217217
relatedObjectMigrationResult.flexipageAssessmentInfos,
218-
this.org.getConnection().version
218+
this.org.getConnection().version,
219+
messages
219220
);
220221

221222
try {
@@ -315,7 +316,7 @@ export default class Migrate extends OmniStudioBaseCommand {
315316
if (consent && includeLwc) {
316317
deploymentConfig.authKey = process.env[authEnvKey];
317318
if (!deploymentConfig.authKey) {
318-
Logger.error(messages.getMessage('authKeyEnvVarNotSet'));
319+
Logger.warn(messages.getMessage('authKeyEnvVarNotSet'));
319320
}
320321
}
321322

src/migration/deployer.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,19 @@ export class Deployer {
1919
}
2020

2121
public deploy(): void {
22+
const pwd = shell.pwd();
2223
shell.cd(this.projectPath);
23-
if (this.authKey) {
24-
sfProject.createNPMConfigFile(this.authKey);
25-
Logger.logVerbose(this.messages.getMessage('installingRequiredDependencies'));
26-
sfProject.installDependency();
27-
sfProject.installDependency(this.requiredNodeDependency);
24+
try {
25+
if (this.authKey) {
26+
sfProject.createNPMConfigFile(this.authKey);
27+
Logger.logVerbose(this.messages.getMessage('installingRequiredDependencies'));
28+
sfProject.installDependency();
29+
sfProject.installDependency(this.requiredNodeDependency);
30+
}
31+
Logger.log(path.join(pwd.toString(), 'package.xml'));
32+
sfProject.deployFromManifest(path.join(pwd.toString(), 'package.xml'), this.username);
33+
} finally {
34+
shell.cd(pwd);
2835
}
29-
sfProject.deployFromManifest(path.join(process.cwd(), 'package.xml'), this.username);
3036
}
3137
}

src/migration/postMigrate.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { Constants } from '../utils/constants/stringContants';
99
import { OrgPreferences } from '../utils/orgPreferences';
1010
import { BaseMigrationTool } from './base';
1111
import { Deployer } from './deployer';
12+
import * as fs from 'fs';
13+
import * as path from 'path';
1214

1315
export class PostMigrate extends BaseMigrationTool {
1416
private readonly org: Org;
@@ -86,7 +88,7 @@ export class PostMigrate extends BaseMigrationTool {
8688
}
8789

8890
public deploy(): void {
89-
if (!this.deploymentConfig.autoDeploy) {
91+
if (!this.deploymentConfig.autoDeploy || !fs.existsSync(path.join(process.cwd(), 'package.xml'))) {
9092
return;
9193
}
9294
try {

src/migration/related/FlexipageMigration.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77

88
import * as fs from 'fs';
99
import * as path from 'path';
10-
import * as shell from 'shelljs';
1110
import { Messages, Org } from '@salesforce/core';
12-
import { sfProject } from '../../utils/sfcli/project/sfProject';
1311
import { Logger } from '../../utils/logger';
1412
import { Constants } from '../../utils/constants/stringContants';
1513
import { FlexiPageAssessmentInfo } from '../../utils/interfaces';
@@ -102,8 +100,6 @@ export class FlexipageMigration extends BaseRelatedObjectMigration {
102100
*/
103101
private process(mode: 'assess' | 'migrate'): FlexiPageAssessmentInfo[] {
104102
Logger.logVerbose(this.messages.getMessage('retrievingFlexiPages'));
105-
shell.cd(this.projectPath);
106-
sfProject.retrieve(Constants.FlexiPage, this.org.getUsername());
107103
const flexiPageDir = path.join(this.projectPath, 'force-app', 'main', 'default', 'flexipages');
108104
const files = fs.readdirSync(flexiPageDir).filter((file) => file.endsWith('.xml'));
109105
Logger.logVerbose(this.messages.getMessage('successfullyRetrievedFlexiPages', [files.length]));

src/migration/related/OmnistudioRelatedObjectMigrationFacade.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ export default class OmnistudioRelatedObjectMigrationFacade {
8686
sfProject.retrieve(APEXCLASS, this.org.getUsername());
8787
}
8888

89+
if (relatedObjects.includes(Constants.FlexiPage)) {
90+
sfProject.retrieve(Constants.FlexiPage, this.org.getUsername());
91+
}
92+
8993
if (relatedObjects.includes(Constants.ExpSites)) {
9094
Logger.logVerbose(EXPERIENCEBUNDLE);
9195
sfProject.retrieve(EXPERIENCEBUNDLE, this.org.getUsername());

src/utils/generatePackageXml.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import * as fs from 'fs';
22
import * as path from 'path';
3+
import { Messages } from '@salesforce/core';
34
import {
45
ApexAssessmentInfo,
56
ExperienceSiteAssessmentInfo,
67
FlexiPageAssessmentInfo,
78
LWCAssessmentInfo,
89
} from './interfaces';
10+
import { Logger } from './logger';
911

1012
export class generatePackageXml {
1113
// Method to generate package.xml with additional types
@@ -14,8 +16,10 @@ export class generatePackageXml {
1416
lwcAssessmentInfos: LWCAssessmentInfo[],
1517
experienceSiteAssessmentInfo: ExperienceSiteAssessmentInfo[],
1618
flexipageAssessmentInfos: FlexiPageAssessmentInfo[],
17-
version: string
19+
version: string,
20+
messages: Messages
1821
): void {
22+
fs.rmSync(path.join(process.cwd(), 'package.xml'), { force: true });
1923
const apexXml = generatePackageXml.getXmlElementforMembers(this.getApexclasses(apexAssementInfos), 'ApexClass');
2024
const lwcXml = generatePackageXml.getXmlElementforMembers(
2125
this.getLwcs(lwcAssessmentInfos),
@@ -32,6 +36,11 @@ export class generatePackageXml {
3236
'FlexiPage'
3337
);
3438

39+
if (!apexXml && !lwcXml && !expsiteXml && !flexipageXml) {
40+
Logger.warn(messages.getMessage('noMetadataToDeploy'));
41+
return;
42+
}
43+
3544
const packageXmlContent = `
3645
<?xml version="1.0" encoding="UTF-8"?>
3746
<Package xmlns="http://soap.sforce.com/2006/04/metadata">

src/utils/logger.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export class Logger {
6565
} else {
6666
if (error) {
6767
Logger.sfUX.error(`\x1b[31m${error.message}\n${error.stack}\x1b[0m`);
68+
} else {
69+
Logger.sfUX.error(`\x1b[31m${message}\x1b[0m`);
6870
}
6971
}
7072
}

src/utils/package.xml

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)