UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

38 lines 2.25 kB
"use strict"; 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