sfdx-git-delta
Version:
Generate the sfdx content in source format and destructive change from two git commits
49 lines • 1.95 kB
JavaScript
import { join } from 'node:path/posix';
import { outputFile } from 'fs-extra';
import PackageBuilder from '../utils/packageHelper.js';
import BaseProcessor from './baseProcessor.js';
const DESTRUCTIVE_CHANGES_FILE_NAME = 'destructiveChanges';
const PACKAGE_FILE_NAME = 'package';
const XML_FILE_EXTENSION = 'xml';
export default class PackageGenerator extends BaseProcessor {
async process() {
this._cleanPackages();
await this._buildPackages();
}
_cleanPackages() {
const additive = this.work.diffs[PACKAGE_FILE_NAME];
const destructive = this.work.diffs[DESTRUCTIVE_CHANGES_FILE_NAME];
for (const [type, members] of additive) {
if (destructive.has(type)) {
destructive.set(type, new Set([...destructive.get(type)].filter(element => !members.has(element))));
if (destructive.get(type).size === 0) {
destructive.delete(type);
}
}
}
}
async _buildPackages() {
const pc = new PackageBuilder(this.config);
await Promise.all([
{
filename: `${DESTRUCTIVE_CHANGES_FILE_NAME}.${XML_FILE_EXTENSION}`,
folder: DESTRUCTIVE_CHANGES_FILE_NAME,
manifest: this.work.diffs[DESTRUCTIVE_CHANGES_FILE_NAME],
},
{
filename: `${PACKAGE_FILE_NAME}.${XML_FILE_EXTENSION}`,
folder: PACKAGE_FILE_NAME,
manifest: this.work.diffs[PACKAGE_FILE_NAME],
},
{
filename: `${PACKAGE_FILE_NAME}.${XML_FILE_EXTENSION}`,
folder: DESTRUCTIVE_CHANGES_FILE_NAME,
manifest: new Map(),
},
].map(op => {
return outputFile(join(this.config.output, op.folder, op.filename), pc.buildPackage(op.manifest));
}));
}
}
//# sourceMappingURL=packageGenerator.js.map
;