msync
Version:
Easily manage building and syncing multiple node-modules in a flexibly defined workspace.
104 lines (103 loc) • 4.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logUpdate = exports.module = void 0;
var tslib_1 = require("tslib");
var Rsync = require("rsync");
var libs_1 = require("./libs");
function rsyncExecute(rsync) {
return new Promise(function (resolve, reject) {
rsync.execute(function (err, code, cmd) {
if (err) {
reject(err);
}
else {
resolve({ err: err, code: code, cmd: cmd });
}
});
});
}
function module(from, to) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var IGNORE, FROM_DIR, TO_DIR, rsync;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
IGNORE = ['.DS_Store', 'node_modules', '.tmp'];
FROM_DIR = libs_1.fs.join(from.dir, '/');
TO_DIR = libs_1.fs.join(to.dir, 'node_modules', from.name, '/');
return [4, libs_1.fs.ensureDir(TO_DIR)];
case 1:
_a.sent();
rsync = new Rsync()
.source(FROM_DIR)
.destination(TO_DIR)
.exclude(IGNORE)
.delete()
.flags('aW');
return [4, rsyncExecute(rsync)];
case 2:
_a.sent();
return [2];
}
});
});
}
exports.module = module;
function logUpdate(target) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var dir, parentDir, _a, file, getTotal, total, text;
var _this = this;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (target.isIgnored || !target.tsconfig) {
return [2];
}
dir = libs_1.fs.join(target.dir, target.tsconfig.compilerOptions.outDir || '');
parentDir = libs_1.fs.basename(libs_1.fs.dirname(dir));
_a = parentDir !== 'node_modules';
if (_a) return [3, 2];
return [4, libs_1.fs.pathExists(dir)];
case 1:
_a = !(_b.sent());
_b.label = 2;
case 2:
if (_a) {
return [2];
}
file = libs_1.fs.join(dir, '.__msync.js');
getTotal = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var text, _i, _a, line;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4, libs_1.fs.pathExists(file)];
case 1:
if (!(_b.sent())) {
return [2, 0];
}
return [4, libs_1.fs.readFile(file)];
case 2:
text = (_b.sent()).toString();
for (_i = 0, _a = text.split('\n'); _i < _a.length; _i++) {
line = _a[_i];
if (line.trim().startsWith('saveTotal')) {
return [2, parseInt(line.split(':')[1], 10) + 1];
}
}
return [2, 0];
}
});
}); };
return [4, getTotal()];
case 3:
total = _b.sent();
text = "\n/*\n TEMPORARY FILE GENERATED BY\n MSync (https://github.com/philcockfield/msync)\n This file causes [nodemon] to restart. It is safe to delete this file.\n\n saveTotal: ".concat(total, "\n*/\n");
return [4, libs_1.fs.writeFile(file, text)];
case 4:
_b.sent();
return [2];
}
});
});
}
exports.logUpdate = logUpdate;