# version-rust Rust rewrite of `version-python` (same repo, `main` branch still carries the flat python layout). Goal: one concise binary + webapp, eventually replacing the python tooling. ## Why this structure - `main` stays untouched (flat python layout) until the rewrite reaches parity. - This branch re-homes the python code into `version-python/` (via `git mv`, history preserved) and starts `version-rust/` beside it. - `version-python/AGENTS.md` still documents the python stage — its rules (secrets, failure policy, idempotency, rate limiting) apply to the rewrite too and are the contract the Rust version must keep. ## Planned crate choices (initial, adjust as modules get ported) | Concern | Python today | Rust plan | |---|---|---| | 7z extraction | 7z CLI, cp437 name repair, /var/tmp fallback | `sevenz-rust2` (pure Rust; LZMA/LZMA2/PPMD/AES-256 decrypt, v0.23, active) | | zip extraction | 7z CLI | `zip` crate | | RAR extraction (critical) | 7z CLI | `unrar.rs` (muja/unrar.rs — bindings to the official UnRAR library, RAR5 support, extraction only). Note: UnRAR license is freeware-not-OSI and forbids building a RAR compressor — acceptable, we only extract, and compression later is 7z-only (`sevenz-rust2` `ArchiveWriter`) anyway | | HTTP client | `requests` | `reqwest` (blocking first, async where the webapp needs it) | | sha256 (gofile website token, --hash manifest) | hashlib | `sha2` | | Fuzzy matching (sorter) | difflib-style ratios | `strsim` — port thresholds exactly, add unit tests | | CLI | argparse | `clap` | | Webapp | — | `axum` (CLI parity first, webapp second) | | Discord export | DCE docker container (external) | unchanged: shell out to docker | ## Port order (suggested) 1. `state` / `globalstore` / manifest — **done**, see `src/state.rs`, `src/globalstore.rs`, `src/manifest.rs` (schemas backward compatible). 2. hosters: `gofile` (one guest account per run!), `zero807` (UA + Referer). 3. extraction + manifest appender. 4. catalogue / sorter (hardest logic; port the matching rules documented in `version-python/AGENTS.md` §7 with tests). 5. webapp on top.