UNPKG

grading

Version:

Grading of student submissions, in particular programming tests.

51 lines (39 loc) 1.78 kB
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)); } }