Skip to content

Latest commit

 

History

History
95 lines (68 loc) · 1.76 KB

File metadata and controls

95 lines (68 loc) · 1.76 KB

Development

Install

Windows PowerShell:

.\scripts\setup.ps1

macOS/Linux:

chmod +x scripts/setup.sh scripts/test.sh
./scripts/setup.sh

Run Tests

Windows PowerShell:

.\scripts\test.ps1

macOS/Linux:

./scripts/test.sh

Pull And Refresh

Windows PowerShell:

.\scripts\update.ps1

macOS/Linux:

./scripts/update.sh

Project Layout

src/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/

Release Checklist

Before publishing changes:

Run the test script for your operating system.
git status --short

Confirm these files are not staged:

  • .env
  • config.local.toml
  • secrets/google-client-secret.json
  • secrets/google-token.json
  • .venv/

Design Principles

  • 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.

AI-Assisted Build Notes

For a nontechnical explanation of how this project was created, see: