extras/plagiarism_detector/dolos_wrapper.mjs (32 lines of code) (raw):

import { Dolos } from "@dodona/dolos-lib"; import fs from 'fs'; import path from 'path'; // Function to parse command line arguments function parseArgs(args) { const parsed = { files: [] }; for (let i = 2; i < args.length; i++) { if (args[i] === '--files' || args[i] === '-f') { while (++i < args.length && !args[i].startsWith('-')) { parsed.files.push(args[i]); } i--; } } return parsed; } // Parse command line arguments const args = parseArgs(process.argv); // Use command line arguments const files = args.files; // Filter out non-existent files const existingFiles = files.filter(file => fs.existsSync(file) && fs.statSync(file).isFile()); const dolos = new Dolos(); const report = await dolos.analyzePaths(existingFiles); const pairs = report.allPairs(); const simplifiedPairs = pairs.map(pair => ({ leftFile: pair.leftFile.path, rightFile: pair.rightFile.path, similarity: pair.similarity })); const jsonOutput = JSON.stringify(simplifiedPairs, null, 2); console.log(jsonOutput); // Print the JSON output to stdout