# Vid-Repair 🎬🛠️ Vid-Repair is a cross‑platform CLI that scans video files for container/stream/decode problems and applies safe repairs using your system `ffmpeg`/`ffprobe`. ## Quick Start 🚀 ### Requirements ✅ - `ffmpeg` and `ffprobe` available on PATH ### Install 🧰 ```bash cargo build --release ``` To install the CLI from the workspace root: ```bash cargo install --path ./vid-repair ``` (`cargo install --path .` will fail because the repo root is a workspace manifest.) ### Common commands 💻 ```bash # Scan files or folders vid-repair scan /path/to/videos # Watch a folder and scan new/changed files once they finish writing vid-repair scan --watch /path/to/videos # Fix (safe policy, in-place) vid-repair fix /path/to/videos # Fix with aggressive policy (allows re-encode) vid-repair fix --policy aggressive /path/to/videos # JSON output (for scripts) vid-repair scan --json /path/to/videos ``` ### Scan depth 🔎 ```bash # Quick scan (faster, less thorough) vid-repair scan --scan-depth quick /path/to/videos # Standard scan vid-repair scan --scan-depth standard /path/to/videos # Deep scan (default, full decode) vid-repair scan --scan-depth deep /path/to/videos ``` ### Recursive vs non‑recursive 🧭 ```bash # Disable recursive scanning vid-repair scan --no-recursive /path/to/videos ``` ### Exit codes 🧾 - `0` no issues - `1` issues found - `2` fix failed - `3` fatal error ## Config ⚙️ On first run, a commented TOML config is created in the XDG config directory: - Linux: `~/.config/vid-repair/config.toml` - macOS: `~/Library/Application Support/vid-repair/config.toml` - Windows: `%APPDATA%/vid-repair/config.toml` You can edit this file to set defaults like scan depth, include/exclude patterns, and watch behavior. CLI flags always override config values. # AI Disclaimer 🤖 This software was written with assistance from OpenAI Codex. # Developer Guide 🛠️ This section is for contributors and anyone building on the project. ## Project layout 🧱 - `vid-repair/` – CLI binary - `vid-repair-core/` – core library (scan, rules, fix, report, watch) - `rulesets/` – modular rule packs (TOML) - `scripts/` – helper scripts (fixtures, checks) ## Rulesets 🧩 Rules are data‑driven and split by domain in `rulesets/*.toml`. Before shipping changes: ```bash vid-repair rules lint ``` ## Fixtures 🧪 Generate fixtures locally (git‑ignored): ```bash scripts/generate_fixtures.sh ``` Use fixtures to validate scan logic and rule coverage. Add new fixtures for real‑world edge cases (truncated files, corrupted NAL units, etc.). ## Tests ✅ ```bash scripts/check.sh ``` This runs the full test suite and ruleset lint.