control-freak-ide/server/nodejs/_build/components/xfile/xfile.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

153 lines
6.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Component_1 = require("../Component");
const interfaces_1 = require("../../fs/interfaces");
const copy_1 = require("../../fs/copy");
const path = require("path");
const StringUtils_1 = require("../../utils/StringUtils");
const utils_1 = require("../../vfs/utils");
let pathToRegexp = require('path-to-regexp');
class XFILE extends Component_1.Component {
constructor(application, serviceConfig, options) {
super(application, serviceConfig);
this.abort = false;
this.waiting = {};
this.options = options;
}
label() {
return "xfile";
}
services(config) {
return [];
}
routes() {
return [];
}
cancel() {
this.abort = true;
}
answer(data) {
const waiting = this.waiting[data.iid];
if (waiting) {
waiting['resolve'](data.answer);
delete this.waiting[data.iid];
}
}
_cp(src, dst) {
}
cp(src, dst) {
const directoryService = this.application['directoryService'];
// console.log('dir', directoryService);
const selection = ['workspace_user/ClayCenter/init.css'];
const srcMount = directoryService.resolveShort(selection[0]).mount;
const srcVFS = directoryService.getVFS(srcMount);
const root = directoryService.resolvePath(srcMount, '');
const checkFilesInRoot = (dirService, srcMount, selection) => {
let result = true;
selection.forEach((item) => {
const rel = dirService.resolveShort(item).path;
const abs = dirService.resolvePath(srcMount, rel);
if (!utils_1.containsPath(abs, rel)) {
result = false;
}
});
return result;
};
const relatives = (dirService, selection) => {
return selection.map((item) => {
return dirService.resolveShort(item).path;
});
};
const absolutes = (dirService, selection) => {
return selection.map((item) => {
const rel = dirService.resolveShort(item).path;
const abs = dirService.resolvePath(srcMount, rel);
return abs;
});
};
// console.log('contains : ', checkFilesInRoot(directoryService, srcMount, ['workspace_user/A-VLC.css']));
// const _matcher = matcher('', relatives(directoryService, selection), matcherOptions);
// console.log('as regex : ', pathToRegexp('./ClayCenter/init.css'));
// console.log('as regex : ', pathToRegexp('ClayCenter/init.css'));
// console.log('rels : ', relatives(directoryService, selection));
// console.log('matcher ', _matcher('**/ClayCenter/init.css'));
// console.log('matcher 2 ', _matcher('./ClayCenter/init.css'));
// console.log('matcher 3 ', _matcher('**/*/init.css'));
// console.log('matcher 4 ', _matcher('./**/*/*.css'));
// console.log('matcher 5 ', _matcher('**/*.css'));
// console.log('matcher 6 ', _matcher('ClayCenter/init.css'));
// const _matcherAbs = matcher(root + '/', absolutes(directoryService, selection), matcherOptions);
// console.log('abs : ' + root, absolutes(directoryService, selection));
// console.log('matcher abs ', _matcherAbs('**/ClayCenter/init.css'));
// console.log('matcher abs 2 ', _matcherAbs('./ClayCenter/init.css'));
// console.log('matcher abs 3 ', _matcherAbs('**/*/*.css'));
// console.log('matcher abs 4 ', _matcherAbs('/PMaster/projects/x4mm/user/workspace/ClayCenter/init.css'));
// console.log('matcher abs 4 ', _matcherAbs('/PMaster/projects/x4mm/user/workspace/ClayCenter/init.css'));
let c = 0;
let done = [];
let delegate = this.options.delegate;
let self = this;
const progress = function (path, current, total, item) {
done.push({ item: item, path: path });
c++;
if (c >= 1) {
delegate.onProgress(done);
done = [];
c = 0;
}
return !self.abort;
};
const conflictCallback = function (path, item, err) {
const iid = StringUtils_1.createUUID();
self.waiting[iid] = {};
const promise = new Promise((resolve, reject) => {
delegate.onInterrupt({
path: path,
error: err,
iid: iid,
item: item
});
self.waiting[iid].resolve = resolve;
});
self.waiting[iid].promise = promise;
return promise;
};
let options = {
progress: progress,
conflictCallback: conflictCallback,
// overwrite: true,
matching: ['**/*.ts'],
debug: false,
flags: interfaces_1.ECopyFlags.FOLLOW_SYMLINKS | interfaces_1.ECopyFlags.REPORT,
writeProgress: (path, current, total) => {
delegate.onProgress([
{
path: path,
current: current,
total: total
}
]);
}
};
src = path.resolve('./src/fs/');
dst = '/tmp/node_modules_fs/';
this.running = copy_1.async(src, dst, options).then(function (res) {
console.log('done', res);
delegate.onFinish({});
}).catch(function (e) {
console.error('error copyAsync', e);
});
}
}
exports.XFILE = XFILE;
;
//
// ─── flow ───────────────────────────────────────────────────────────────────────
//
// client:
// runAppServerComponentMethod(component,method,args)
// server:
// runComponentMethod(component,method,args)
// component:
// method(...,delegate)
//# sourceMappingURL=xfile.js.map