Windows PowerShell:
.\scripts\setup.ps1macOS/Linux:
chmod +x scripts/setup.sh scripts/test.sh
./scripts/setup.shWindows PowerShell:
.\scripts\test.ps1macOS/Linux:
./scripts/test.shWindows PowerShell:
.\scripts\update.ps1macOS/Linux:
./scripts/update.shsrc/canvas_download/
archive.py Local archive writer
bootstrap.py First-run local folder creator
canvas_client.py Canvas REST API client
cli.py Command-line interface
config.py TOML and environment config
course_selection.py Bulk archive target inference and chooser parsing
dedupe.py Exact duplicate downloaded file cleanup
drive.py Optional Google Drive API sync
filesystem.py Safe filenames and path guards
json_io.py JSON/text file helpers
tests/
test_*.py
docs/
Before publishing changes:
Run the test script for your operating system.
git status --short
Confirm these files are not staged:
.envconfig.local.tomlsecrets/google-client-secret.jsonsecrets/google-token.json.venv/
- Local archive is canonical.
- Built-in Google Drive API sync is optional and mirrors the local archive when used.
- Reruns should be safe.
- Secrets must stay out of Git.
- Course selection must be explicit when the instructor has access to unrelated shells.
For a nontechnical explanation of how this project was created, see: