zcatalyst-cli
Version:
Command Line Tool for CATALYST
85 lines (84 loc) • 3.97 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const chokidar_1 = require("chokidar");
const languages_1 = require("./shell/prepare/languages");
const logger_1 = require("./util_modules/logger");
const char_1 = require("./util_modules/char");
const ansi_colors_1 = require("ansi-colors");
exports.default = (target) => __awaiter(void 0, void 0, void 0, function* () {
return new Promise((res) => {
let paused = false;
let latestEvent;
const watcher = (0, chokidar_1.watch)(target.source, {
ignored: [/(^|[\/\\])\../, 'node_modules/**/*', '/**/*.jar', 'catalyst-debug.log'],
cwd: target.source,
ignoreInitial: true
});
watcher.on('next', () => __awaiter(void 0, void 0, void 0, function* () {
if (latestEvent === undefined) {
paused = false;
return;
}
const currentLatestEvent = latestEvent;
(0, logger_1.info)(`\n${currentLatestEvent.evnt} of ${currentLatestEvent.pth} in ${target.name} detected. Preparing your function, please wait...`);
watcher.emit('preparing');
target.failure_reason = undefined;
target.valid = true;
target.compilationError = undefined;
target.compilationWarning = undefined;
yield (0, languages_1.prepareFunctions)([target]);
if (currentLatestEvent.at === latestEvent.at) {
latestEvent = undefined;
}
if (target.compilationError) {
target.compilationError.forEach((error) => {
console.log(`${(0, ansi_colors_1.red)(char_1.CHAR.error)} Error while compiling function[${target.name}]`);
console.log(error);
});
}
if (target.compilationWarning) {
target.compilationWarning.forEach((warn) => {
console.warn(`${(0, ansi_colors_1.yellow)(char_1.CHAR.warning)} Warning while compiling function[${target.name}]`);
console.warn(warn);
});
}
if (target.valid) {
watcher.emit('compiled');
return;
}
(0, logger_1.warning)('target [' + target.name + '] is not a valid one reason : ' + target.failure_reason);
(0, logger_1.info)('Waiting for correction..');
(0, logger_1.info)('\n(To exit, press ^C)');
watcher.emit('next');
}));
watcher.on('all', (evnt, pth) => {
if ((latestEvent === null || latestEvent === void 0 ? void 0 : latestEvent.at) && Date.now() - latestEvent.at < 1000) {
return;
}
latestEvent = { evnt, pth, at: Date.now() };
if (paused) {
return;
}
paused = true;
watcher.emit('next');
});
watcher.on('ready', () => {
target.watcher = watcher;
res();
});
watcher.on('error', (err) => {
(0, logger_1.debug)(err);
(0, logger_1.warning)(`Unable to start watcher for target [${target.name}]. Skipping watch mode.`);
res();
});
});
});