Skip to content
This repository was archived by the owner on Nov 5, 2023. It is now read-only.

Commit add1583

Browse files
author
Mohith Shrivastava
committed
Refactor
1 parent 5e1144a commit add1583

File tree

3 files changed

+51
-27
lines changed

3 files changed

+51
-27
lines changed

src/commands/generate/packagexml.ts

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
import { core, flags, SfdxCommand } from '@salesforce/command';
22
import chalk from 'chalk';
3-
import * as child from 'child_process';
4-
import * as util from 'util';
5-
import {MetadataResult} from '../../models/metadataResult';
6-
import {PackageXmlTemplate} from '../../service/packagexmlTemplate';
3+
import {MetadataMember} from '../../service/packagexmlbuilder/metadataMember';
4+
import {PackageXmlTemplate} from '../../service/packagexmlbuilder/packagexmlTemplate';
75
// Initialize Messages with the current plugin directory
86
core.Messages.importMessagesDirectory(__dirname);
97

108
// Load the specific messages for this file. Messages from @salesforce/command, @salesforce/core,
119
// or any library that is using the messages framework can also be loaded this way.
1210
const messages = core.Messages.loadMessages('mo-dx-plugin', 'org');
1311

14-
const exec = util.promisify(child.exec);
15-
1612
export default class PackageXML extends SfdxCommand {
1713

1814
public static description = messages.getMessage('generatePackageXML');
@@ -35,38 +31,24 @@ export default class PackageXML extends SfdxCommand {
3531
protected static requiresUsername = true;
3632

3733
public async run(): Promise<string> {
38-
let packagexml ;
34+
let packagexml: string ;
3935
const conn = this.org.getConnection();
4036
const apiVersion = conn.getApiVersion();
4137
const defaultusername = this.flags.targetusername
4238
? this.flags.targetusername
4339
: this.org.getUsername();
4440
this.ux.startSpinner(chalk.yellowBright('Building package xml for ' + this.flags.metadatatype));
45-
const listMetadata = `sfdx force:mdapi:listmetadata -m ${this.flags.metadatatype} -u ${defaultusername} --json`;
46-
try {
47-
const result = await exec(listMetadata, {
48-
maxBuffer: 1000000 * 1024
49-
});
50-
const jsonResult = result.stdout;
51-
const metadatalist = JSON.parse(jsonResult).result as MetadataResult[];
52-
packagexml = this.createXML(metadatalist, apiVersion);
53-
process.stdout.write(packagexml);
54-
this.ux.stopSpinner(chalk.greenBright('Package XML generated Successfully ✔'));
55-
} catch (exception) {
56-
57-
}
41+
packagexml = await this.createXML(this.flags.metadatatype, apiVersion, defaultusername);
42+
process.stdout.write(packagexml);
43+
this.ux.stopSpinner(chalk.greenBright('Package XML generated Successfully ✔'));
5844
return packagexml;
5945
}
6046

61-
private createXML(metadataResults: MetadataResult[], version: string): string {
47+
private async createXML(metadatatype: string, version: string, defaultusername: string): Promise<string> {
6248
let xml = '' as string;
6349
xml = PackageXmlTemplate.createHeader();
64-
xml = xml + PackageXmlTemplate.startType();
65-
for (const componentname of metadataResults) {
66-
xml = xml + PackageXmlTemplate.createMember(componentname.fullName);
67-
}
68-
xml = xml + PackageXmlTemplate.nameTag(this.flags.metadatatype);
69-
xml = xml + PackageXmlTemplate.endType();
50+
const metadataMember = new MetadataMember(metadatatype, defaultusername);
51+
xml = xml + await metadataMember.createMemberXml();
7052
xml = xml + PackageXmlTemplate.createFooter(version);
7153
return xml;
7254
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import * as child from 'child_process';
2+
import * as util from 'util';
3+
import {MetadataResult} from '../../models/metadataResult';
4+
import {PackageXmlTemplate} from './packagexmlTemplate';
5+
6+
const exec = util.promisify(child.exec);
7+
8+
export class MetadataMember {
9+
10+
public metadatatype: string;
11+
public username: string;
12+
13+
constructor(metadatatype: string, username: string) {
14+
this.metadatatype = metadatatype;
15+
this.username = username;
16+
}
17+
18+
public async createMemberXml(): Promise<string> {
19+
let metadataxml = '';
20+
metadataxml = metadataxml + PackageXmlTemplate.startType();
21+
for (const componentname of await this.getMembers()) {
22+
metadataxml = metadataxml + PackageXmlTemplate.createMember(componentname.fullName);
23+
}
24+
metadataxml = metadataxml + PackageXmlTemplate.nameTag(this.metadatatype);
25+
metadataxml = metadataxml + PackageXmlTemplate.endType();
26+
return metadataxml;
27+
}
28+
29+
private async getMembers(): Promise<MetadataResult[]> {
30+
const listMetadata = `sfdx force:mdapi:listmetadata -m ${this.metadatatype} -u ${this.username} --json`;
31+
try {
32+
const result = await exec(listMetadata, {
33+
maxBuffer: 1000000 * 1024
34+
});
35+
const jsonResult = result.stdout;
36+
const metadatalist = JSON.parse(jsonResult).result as MetadataResult[];
37+
return metadatalist;
38+
} catch (exception) {
39+
process.stdout.write(exception);
40+
}
41+
}
42+
}
File renamed without changes.

0 commit comments

Comments
 (0)