@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
38 lines • 2.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.retrieveEngineInstances = retrieveEngineInstances;
const config_1 = require("./config");
const shell_1 = require("./r-bridge/shell");
const ansi_1 = require("./util/text/ansi");
const tree_sitter_executor_1 = require("./r-bridge/lang-4.x/tree-sitter/tree-sitter-executor");
const log_1 = require("./util/log");
/**
* Retrieve all requested engine instance.
* Please make sure that if this includes the R engine, that you properly shut it down again!
*/
async function retrieveEngineInstances(config, defaultOnly = false) {
const engines = {};
if (config_1.FlowrConfig.getForEngine(config, 'r-shell') && (!defaultOnly || config.defaultEngine === 'r-shell')) {
// we keep an active shell session to allow other parse investigations :)
engines['r-shell'] = new shell_1.RShell(config_1.FlowrConfig.getForEngine(config, 'r-shell'), {
revive: 2 /* RShellReviveOptions.Always */,
onRevive: (code, signal) => {
const signalText = signal == null ? '' : ` and signal ${signal}`;
console.log(ansi_1.formatter.format(`R process exited with code ${code}${signalText}. Restarting...`, { color: 5 /* Colors.Magenta */, effect: ansi_1.ColorEffect.Foreground }));
console.log((0, ansi_1.italic)(`If you want to exit, press either Ctrl+C twice, or enter ${(0, ansi_1.bold)(':quit')}`));
}
});
}
if (config_1.FlowrConfig.getForEngine(config, 'tree-sitter') && (!defaultOnly || config.defaultEngine === 'tree-sitter')) {
await tree_sitter_executor_1.TreeSitterExecutor.initTreeSitter(config_1.FlowrConfig.getForEngine(config, 'tree-sitter'));
engines['tree-sitter'] = new tree_sitter_executor_1.TreeSitterExecutor();
}
let defaultEngine = config.defaultEngine;
if (!defaultEngine || !engines[defaultEngine]) {
// if a default engine isn't specified, we just take the first one we have
defaultEngine = Object.keys(engines)[0];
}
log_1.log.info(`Using engines ${Object.keys(engines).join(', ')} with default ${defaultEngine}`);
return { engines, default: defaultEngine };
}
//# sourceMappingURL=engines.js.map