@veecode-platform/safira-cli
Version:
Generate a microservice project from your spec.
55 lines (54 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateSyncFiles = void 0;
const tslib_1 = require("tslib");
const file_system_utils_1 = require("../utils/file-system-utils");
const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
class UpdateSyncFiles {
constructor() {
this._override = false;
this._skip = false;
}
async syncFiles(originBasePath, destinyBasePath, force, compare) {
const conflictResult = this._checkConflicts(originBasePath, destinyBasePath);
await this.formatCode(conflictResult
.flatMap(file => [file.originalFinal, file.destinyFile])
.filter(file => file_system_utils_1.FileSystemUtils.exists(file)));
const choices = ["yes", "no", "yes all", "skip all"];
for (const file of conflictResult) {
if (!this._skip && (!file_system_utils_1.FileSystemUtils.exists(file.destinyFile) || force || this._override)) {
file_system_utils_1.FileSystemUtils.copyFileSync(file.originalFinal, file.destinyFile);
continue;
}
if (!this._skip && !compare(file.originalFinal, file.destinyFile)) {
const response = await inquirer_1.default.prompt([{
name: "override",
message: `override ${file.destinyFile}?`,
type: "list",
choices: choices,
}]);
if (response.override === choices[2])
this._override = true;
if (response.override === choices[3])
this._skip = true;
if ([choices[0], choices[2]].includes(response.override)) {
file_system_utils_1.FileSystemUtils.copyFileSync(file.originalFinal, file.destinyFile);
continue;
}
}
}
}
_checkConflicts(originBasePath, destinyBasePath) {
console.log("Checking conflicts...");
return file_system_utils_1.FileSystemUtils.listFilesRecursive(originBasePath, ["java"]).map(file => {
const packagePath = file.replace(originBasePath, "");
const destinyFile = file_system_utils_1.FileSystemUtils.buildPath(destinyBasePath, packagePath);
return {
originalFinal: file,
destinyFile: destinyFile,
conflict: file_system_utils_1.FileSystemUtils.exists(destinyFile),
};
});
}
}
exports.UpdateSyncFiles = UpdateSyncFiles;