0.1.3 • Published 4 months ago
cpta v0.1.3
CPTA
TA Kit for Computer Programming.
Features
- Compile and Run code in sandbox
- Network isolation (no internet access)
- Limit CPU usage (1 core)
- Limit memory usage (1GB)
- Limit disk usage (
/tmp
and/workspace
) - Read-only root filesystem, write to
/tmp
and/workspace
only
- Mount files into workspace
- Mount files before build
- Mount files before execution
- Flexible file-based case system
- Config
exec.js
to execute target - Define
spec.js
to evaluate result
- Config
- Generate report from results
- Generate spreadsheet report with
students.csv
- Generate spreadsheet report with
File Structure
.
├── .works
| └── <student-id>
| ├── 0-raw
| ├── 1-build
| ├── 2-output
| └── 3-result
├-- .build
| └── mount
| └ ... (files to be mounted before build)
└── .cases
└── <case-name>
├── mount
| └ ... (files to be mounted before execution)
├── exec.js
└── spec.js
Usage
Create workspace from Moodle archive
cpta from-moodle <moodle-archive> --output [output-dir]
output-dir
defaults to ./.works
.
Build all workspaces
cpta make --workspace [workspaces-dir]
workspaces-dir
defaults to ./.works
.
Execute all targets in workspaces
cpta exec --workspace [workspaces-dir] --case [cases-dir]
workspaces-dir
defaults to ./.works
.
cases-dir
defaults to ./.cases
.
Evaluate all targets in workspaces
cpta eval --workspace [workspaces-dir] --case [cases-dir]
workspaces-dir
defaults to ./.works
.
cases-dir
defaults to ./.cases
.
Make report from workspaces
cpta report
Dive into workspaces in container
cpta dive