UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

43 lines 1.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const quads_1 = require("../util/quads"); const log_1 = require("../util/log"); const files_1 = require("../util/files"); const script_1 = require("./common/script"); const shell_1 = require("../r-bridge/shell"); const retriever_1 = require("../r-bridge/retriever"); const options = (0, script_1.processCommandLineArgs)('export-quads', [], { subtitle: 'Generate RDF N-Quads from the AST of a given R script', examples: [ '{bold -i} {italic example.R} {bold --output} {italic "example.quads"}', '{bold --help}' ] }); const shell = new shell_1.RShell(); async function writeQuadForSingleFile(request, output) { const normalized = await (0, retriever_1.retrieveNormalizedAstFromRCode)(request, shell); const serialized = (0, quads_1.serialize2quads)(normalized.ast, { context: request.content }); log_1.log.info(`Appending quads to ${output}`); fs_1.default.appendFileSync(output, serialized); } async function getQuads() { const output = options.output ?? 'out.quads'; let skipped = 0; for await (const request of (0, files_1.allRFilesFrom)(options.input, options.limit)) { try { await writeQuadForSingleFile(request, output); } catch (e) { log_1.log.error(`[Skipped] Error while processing ${request.content}: ${e.message} (${e.stack ?? ''})`); skipped++; } } console.log(`Skipped ${skipped} files`); shell.close(); } void getQuads(); //# sourceMappingURL=export-quads-app.js.map