@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
75 lines (74 loc) • 3.2 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const IFileDifference_1 = require("./IFileDifference");
const IFolderDifference_1 = require("./IFolderDifference");
const StorageUtilities_1 = __importDefault(require("./StorageUtilities"));
const ZipStorage_1 = __importDefault(require("./ZipStorage"));
class DifferenceSet {
fileDifferences = [];
folderDifferences = [];
async getZip() {
const zipStorage = new ZipStorage_1.default();
for (let i = 0; i < this.fileDifferences.length; i++) {
const fileDiff = this.fileDifferences[i];
if (fileDiff.type === IFileDifference_1.FileDifferenceType.fileAdded || fileDiff.type === IFileDifference_1.FileDifferenceType.contentsDifferent) {
if (fileDiff.updated) {
const zipFile = await zipStorage.rootFolder.ensureFileFromRelativePath(fileDiff.path);
if (fileDiff.updated.content) {
zipFile.setContent(fileDiff.updated.content);
}
}
}
}
await zipStorage.rootFolder.saveAll();
return zipStorage;
}
getHasDeletions() {
for (let i = 0; i < this.fileDifferences.length; i++) {
if (this.fileDifferences[i].type === IFileDifference_1.FileDifferenceType.fileDeleted) {
return true;
}
}
for (let i = 0; i < this.folderDifferences.length; i++) {
if (this.folderDifferences[i].type === IFolderDifference_1.FolderDifferenceType.folderDeleted) {
return true;
}
}
return false;
}
hasFileOnlyOfExtension(...extensions) {
for (let i = 0; i < this.fileDifferences.length; i++) {
const extension = StorageUtilities_1.default.getTypeFromName(this.fileDifferences[i].path);
if (!extensions.includes(extension)) {
return false;
}
}
return true;
}
hasFileOfExtension(...extensions) {
for (let i = 0; i < this.fileDifferences.length; i++) {
const extension = StorageUtilities_1.default.getTypeFromName(this.fileDifferences[i].path);
if (extensions.includes(extension)) {
return true;
}
}
return false;
}
async copyFileUpdatesAndAdds(storage) {
for (let i = 0; i < this.fileDifferences.length; i++) {
const fileDiff = this.fileDifferences[i];
if ((fileDiff.type === IFileDifference_1.FileDifferenceType.fileAdded || fileDiff.type === IFileDifference_1.FileDifferenceType.contentsDifferent) &&
fileDiff.updated &&
fileDiff.updated.content !== null) {
const file = await storage.rootFolder.ensureFileFromRelativePath(fileDiff.path);
file.setContent(fileDiff.updated.content);
}
}
}
}
exports.default = DifferenceSet;