grading
Version:
Grading of student submissions, in particular programming tests.
51 lines (39 loc) • 1.78 kB
text/typescript
import { OptionValues } from 'commander';
import { error, log, retrieveOriginalMoodleFile, retrieveZipFile, verbosity } from './cliUtil';
import { cmdCheck } from './cmdCheck';
import { compareResults } from './cmdCompare';
import { cmdGrade } from "./cmdGrade";
import { cmdPDF } from "./cmdPDF";
export async function cmdSelected(selected: string[], options: OptionValues) {
verbosity(options);
log("Check, grade and create PDF for selected submissions.");
const errors: string[] = [];
try {
if (!selected || !selected.length) {
program.error("No filter IDs specified.");
}
const zipFile = await retrieveZipFile(options.zipFile, options);
const moodleFile = await retrieveOriginalMoodleFile(options.moodleFile, options);
// part 1: run check for selected submissions
log("--------------------------------------------------")
log("Perform checks for selected submissions.");
await cmdCheck(zipFile, { ...options, selected: selected }, true, errors);
// part 2: run grading
log("--------------------------------------------------")
log("Perform grading for all submissions.");
await cmdGrade(moodleFile, options, true);
// part 3: create PDF report
log("--------------------------------------------------")
log("Create PDF report for selected submissions.");
await cmdPDF({ ...options, selected: selected }, true);
} catch (err) {
error(`${SEP}`)
// error(`${SEP}\nError: ${err}`);
program.error(String(err));
}
log(`${SEP}\nDone.`);
if (errors.length > 0) {
error(`There were ${errors.length} errors:`)
errors.forEach(msg => error(msg));
}
}