Examples#

All commands below invoke the uoabot wrapper, which drives the fetcher and the grader. Run them from the install root, with <homework> matching a directory under hw/ and <student> the student’s GitHub username.

uoabot [-h|--homework <str>] [-s|--single <str>] [--grade] [--fetch]
       [--specific <str>] [-f] [-t] [--force_tests] [--force_repos]
       [-m|--mirror] [-p|--purge] [--purge_mir] [-n|--no_log]
       [-c|--config <path>]

Single repository#

-s always goes together with -h, which the wrapper needs to resolve the homework directory. a bare student name is automatically prefixed with <homework>-:

uoabot -h hw0 -s hw0-aliquot         # fetch + grade one repo
uoabot -h hw0 -s aliquot             # same. the homework prefix is added automatically
uoabot -h hw0 -s hw0-aliquot --fetch # fetch only, no grading
uoabot -h hw0 -s hw0-aliquot --grade # grade the already-fetched repo

Batch mode (whole homework)#

uoabot -h hw0                        # fetch + grade every repo of hw0
uoabot -h hw0 --fetch                # fetch all repos, skip grading
uoabot -h hw0 --grade                # grade all fetched repos, skip fetching
uoabot -h hw0 -t                     # fetch only the shared test files
uoabot -h hw0 -f                     # force re-pull of all repos and tests
uoabot -h hw0 --force_tests          # force re-pull of test files only
uoabot -h hw0 --force_repos          # force re-pull of student repos only

Batch mode processes every repository of the homework and prints a summary of total, succeeded, failed and skipped repos. Mirrors are skipped.

Partial grading#

uoabot -h hw0 -s hw0-aliquot --specific Pr1_suite    # run one suite
uoabot -h hw0 -s hw0-aliquot --specific compilation  # run one category
uoabot -h hw0 -s hw0-aliquot --specific test_5       # run one test

--specific runs the named suite, category or test together with its non-suppressible dependencies.

Mirrors and purging#

uoabot -h hw0 -s hw0-aliquot --mirror       # Copy the repo as ...-mirror1, -mirror2, ...
uoabot -h hw0 -s hw0-aliquot --purge_mir    # delete all snapshots of the repo
uoabot -h hw0 -s hw0-aliquot -p             # delete the repo's entire local data

A mirror is a numbered copy the instructor can freely edit and grade specifically, without touching the real submission.

Other options#

uoabot -h hw0 -n                           # disable persistent file logging
uoabot -c /opt/uoabot/system.json -h hw0   # explicit system config path
uoabot -h hw0 --grade --force_repos        # fetch flags are ignored in --grade mode

The system config defaults to ./system.json in the working directory. -c overrides it.