1.7 KiB
1.7 KiB
studip-sync
Command-line tool written in Rust (edition 2024) to sync files from the Stud.IP JSON:API to a local filesystem tree.
The repository contains the cargo project (with CLI/config/state scaffolding) plus an offline copy of the JSON:API documentation (in jsonapi/).
Current status
cargobinary crate scaffolded with namestudip-sync, pinned to Rust edition 2024.- CLI implemented with
auth,sync, andlist-coursessubcommands plus logging/verbosity flags. - Config/state loaders wired up with XDG path resolution, multi-profile support, and JSON/quiet/debug logging modes.
studip-sync authprompts for credentials (or reads--username/--password/STUDIP_SYNC_USERNAME|PASSWORD) and stores the base64 Basic auth token in the active profile.studip-sync list-coursesnow talks to the Stud.IP JSON:API, caches user/semester/course metadata, and prints a table of enrolled courses (with pagination + semester-key inference).studip-sync syncwalks courses → folders → file refs via the JSON:API, downloads missing or changed files (streamed to disk), and supports--dry-run/--prunecleanup.- Ready for further implementation of Stud.IP HTTP client, sync logic, and actual command behaviors.
Next steps
- Add configurable download concurrency plus richer progress/logging (per-course summaries, ETA) while keeping memory usage low.
- Implement smarter state usage (incremental
filter[since]queries, resume checkpoints) and expand pruning to detect/cleanup orphaned state entries. - Add tests and ensure
cargo fmt+cargo clippy --all-targets --all-features -- -D warnings+cargo testpass (and wire into CI if applicable).