@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
31 lines • 1.51 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.detectSummarizationType = detectSummarizationType;
const fs_1 = __importDefault(require("fs"));
const summarizer_1 = require("./summarizer");
const log_1 = require("../../util/log");
async function detectSummarizationType(inputPath) {
if (fs_1.default.statSync(inputPath).isFile()) {
log_1.log.info(`Detected benchmark summarization with single file ${inputPath}`);
return "benchmark" /* SummarizerType.Benchmark */;
}
// current heuristic: search for a tar.gz with two minus signs :D
const dir = await fs_1.default.promises.opendir(inputPath);
const thresholdInit = 60;
let threshold = thresholdInit;
for await (const dirent of dir) {
if (summarizer_1.statisticsFileNameRegex.test(dirent.name)) {
log_1.log.info(`Detected statistics summarization by file ${dirent.name} matching ${summarizer_1.statisticsFileNameRegex.source}`);
return "statistics" /* SummarizerType.Statistics */;
}
else if (threshold-- < 0) {
break;
}
}
log_1.log.info(`Detected benchmark summarization with no file (first ${thresholdInit}) matching ${summarizer_1.statisticsFileNameRegex.source}`);
return "benchmark" /* SummarizerType.Benchmark */;
}
//# sourceMappingURL=auto-detect.js.map