salesforce-alm
Version:
This package contains tools, and APIs, for an improved salesforce.com developer experience.
70 lines (68 loc) • 3.56 kB
JavaScript
;
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.NonDecomposedContentStrategy = void 0;
const path = require("path");
const fs = require("fs-extra");
const core_1 = require("@salesforce/core");
const MetadataRegistry = require("../metadataRegistry");
const srcDevUtil = require("../../core/srcDevUtil");
const metadataTypeFactory_1 = require("../metadataTypeFactory");
/**
* Content strategy for content files that do not require decomposition e.g. ApexClass
*/
class NonDecomposedContentStrategy {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
constructor(metadataType, metadataRegistry, workspaceVersion) {
this.metadataType = metadataType;
this.metadataRegistry = metadataRegistry;
}
getContentPaths(metadataFilePath) {
const metadataType = metadataTypeFactory_1.MetadataTypeFactory.getMetadataTypeFromSourcePath(metadataFilePath, this.metadataRegistry);
const aggregateFullName = metadataType.getAggregateFullNameFromFilePath(metadataFilePath);
const workspaceDir = path.dirname(metadataFilePath);
const directoryItems = srcDevUtil.getDirectoryItems(workspaceDir, true, true);
return directoryItems.filter((directoryItem) => {
const itemFullName = metadataType.getAggregateFullNameFromFilePath(directoryItem);
return (!directoryItem.startsWith('.') &&
!directoryItem.endsWith(MetadataRegistry.getMetadataFileExt()) &&
aggregateFullName === itemFullName);
});
}
async saveContent(metadataFilePath, retrievedContentFilePaths, retrievedMetadataFilePath, createDuplicates, unsupportedMimeTypes, forceoverwrite = false) {
const newPaths = [];
const updatedPaths = [];
const deletedPaths = [];
const dupPaths = [];
const metadataType = metadataTypeFactory_1.MetadataTypeFactory.getMetadataTypeFromSourcePath(metadataFilePath, this.metadataRegistry);
for (const retrievedContentFilePath of retrievedContentFilePaths) {
const workspaceContentFilePath = metadataType.getWorkspaceContentFilePath(metadataFilePath, retrievedContentFilePath);
if (srcDevUtil.pathExistsSync(workspaceContentFilePath)) {
const equalFileCheck = await core_1.fs.areFilesEqual(retrievedContentFilePath, workspaceContentFilePath);
if (forceoverwrite || !equalFileCheck) {
if (createDuplicates) {
const dupPath = workspaceContentFilePath + '.dup';
fs.copySync(retrievedContentFilePath, dupPath);
dupPaths.push(dupPath);
}
else {
fs.copySync(retrievedContentFilePath, workspaceContentFilePath);
updatedPaths.push(workspaceContentFilePath);
}
}
}
else {
fs.copySync(retrievedContentFilePath, workspaceContentFilePath);
newPaths.push(workspaceContentFilePath);
}
}
return [newPaths, updatedPaths, deletedPaths, dupPaths];
}
}
exports.NonDecomposedContentStrategy = NonDecomposedContentStrategy;
//# sourceMappingURL=nonDecomposedContentStrategy.js.map