5 stable releases
Uses new Rust 2024
| 2.2.7 | Oct 27, 2025 |
|---|---|
| 2.2.6 | Oct 8, 2025 |
| 2.2.5 | Oct 3, 2025 |
#48 in Build Utils
101 downloads per month
100KB
2.5K
SLoC
autograder-setup
A tiny Rust CLI that bootstraps GitHub Classroom autograding for Rust projects.
π Currently deployed in Boston Universityβs Intro to Rust course (130+ students, 1000+ student repos).
Key Features
- Fast setup β go from repo β Classroom-ready assignment in under 60 seconds.
- Flexible outputs β grading tables copied to clipboard or written directly to your README.
- Optimized CI β precompiled YAMLs (no runtime parsing) for faster, cheaper runs.
- Instructor-friendly CLI β
init,build,table,resetcover the full workflow.
How it Works
initβ scans for Rust tests and builds.autograder/autograder.json.buildβ converts that config into a ready-to-run GitHub Actions workflow at.github/workflows/classroom.yaml.tableβ generates a Markdown grading table for READMEs, keeping grading criteria transparent.resetβ cleans up generated files for a fresh start.
Keeps autograding setup simple for instructors while making grading criteria clear for students.
Table of Contents
Releases
- Latest: https:github.com/JoeyRussoniello/rust-autograder-setup/releases/latest
- All releases: https:github.com/JoeyRussoniello/rust-autograder-setup/releases
Installation
Option A β Install via Cargo (recommended)
If you already have Rust installed:
cargo install autograder-setup
Check installation:
autograder-setup --version
Option B β Download a prebuilt binary
Precompiled binaries are available on the latest GitHub release:
https:github.com/JoeyRussoniello/rust-autograder-setup/releases/latest
| OS / Target | Archive | Notes |
|---|---|---|
| macOS (x86_64-apple-darwin) | .tar.gz |
Extract and install to /usr/local/bin |
| Windows (x86_64-pc-windows-gnu) | .zip |
Extract and move autograder-setup.exe to your PATH |
See the docs for detailed OS-specific instructions:
Quickstart
# Show top-level help
autograder-setup --help
# 1) Scan src/ recursively and create .autograder/autograder.json
autograder-setup init
# 2) (Optional) Edit tests/autograder.json to adjust points/timeouts
# 3) Generate the GitHub Actions workflow
autograder-setup build
# -> .github/workflows/classroom.yaml
For command-specific flags:
autograder-setup init --help
autograder-setup build --help
autograder-setup table --help
autograder-setup reset --help
Usage
For a full CLI guide and usage instructions, see the Complete Documentation
Repository Structure
.
βββ Cargo.lock # Cargo dependency lockfile (generated; checked in for reproducible builds)
βββ Cargo.toml # Crate metadata and dependencies
βββ LICENSE # Project license
βββ README.md # Basic installation and usage guide (this file)
βββ docs-book # Complete mdbook documentation
β βββ book.toml
β βββ src
β βββ README.md
β βββ SUMMARY.md
β βββ commands
β β βββ build.md
β β βββ init.md
β β βββ reset.md
β β βββ table.md
β βββ faq.md
β βββ installation.md
β βββ json-schema.md
β βββ quickstart.md
β βββ releases.md
β βββ repository-structure.md
βββ src
βββ cli # CLI subcommands and orchestration
β βββ build # `autograder-setup build` β render workflow YAML from autograder.json
β β βββ build_functions.rs # Preamble, YAML helpers, commit-count script writer, small utilities
β β βββ mod.rs # Subcommand entry + YAMLAutograder builder (ties everything together)
β β βββ steps.rs # Hand-assembled YAML step emitters (CommandStep / ReporterStep)
β β βββ tests.rs # Unit tests for YAML rendering and build behavior
β βββ init # `autograder-setup init` β scan tests and write `.autograder/autograder.json`
β β βββ functions.rs # High-level constructors for AutoTests (clippy/commit count/test count)
β β βββ mod.rs # Subcommand entry and pipeline glue
β β βββ scan # Module for AST parsing and test case discovery
β β β βββ mod.rs
β β β βββ tests.rs
β β βββ tests.rs
β βββ mod.rs # Top-level CLI wiring (arg parsing, subcommand dispatch)
β βββ reset # `autograder-setup reset` β remove generated files
β β βββ mod.rs # Subcommand entry
β β βββ tests.rs # Safety checks for deleting generated artifacts
β βββ table # `autograder-setup table` β generate student-facing Markdown table
β β βββ mod.rs # Subcommand entry and table rendering
β βββ tests.rs # Cross-subcommand/integration-style tests for the CLI layer
βββ main.rs # Binary entrypoint; delegates to `cli`
βββ types # Core data model for the autograder
β βββ command_makers.rs # Per-variant command builders (cargo test/clippy/test-count/commit-count)
β βββ mod.rs # `AutoTest { meta, kind }`, `TestMeta`, `TestKind` + Markdown row impl
βββ utils
βββ mod.rs # Shared helpers: path walking, slug/id, yaml_quote, replace_double_hashtag, etc.
βββ tests.rs # Unit tests for utilities
Upcoming Features
- Additional CLI improvements and configuration options
Dependencies
~1.6β9MB
~183K SLoC