Update README with user and developer guides

This commit is contained in:
2025-12-31 22:54:37 -05:00
parent a6cb9addb0
commit 70258ddcbd

119
README.md
View File

@@ -1,61 +1,66 @@
# Vid-Repair # Vid-Repair
Vid-Repair is a crossplatform Rust CLI that scans video files for container/stream/decode problems and applies safe repairs using system `ffmpeg`/`ffprobe`. Vid-Repair is a crossplatform CLI that scans video files for container/stream/decode problems and applies safe repairs using your system `ffmpeg`/`ffprobe`.
## Features ## Quick Start (Regular Users)
- Scan: ffprobe metadata + ffmpeg decode pass ### Requirements
- Datadriven rulesets (TOML) with linting
- Safe fix planning (remux/faststart) + optional aggressive reencode
- Atomic replace + optional keeporiginal
- Watch mode with settle window
- Text output by default, JSON with schema version
## Requirements
- `ffmpeg` and `ffprobe` available on PATH - `ffmpeg` and `ffprobe` available on PATH
## Install ### Install
```bash ```bash
cargo build --release cargo build --release
``` ```
## Usage ### Common commands
```bash ```bash
# Scan # Scan files or folders
vid-repair scan /path/to/videos vid-repair scan /path/to/videos
# Scan and watch for new files # Watch a folder and scan new/changed files once they finish writing
vid-repair scan --watch /path/to/videos vid-repair scan --watch /path/to/videos
# Scan depth (quick|standard|deep)
vid-repair scan --scan-depth quick /path/to/videos
# Disable recursive scanning
vid-repair scan --no-recursive /path/to/videos
# Fix (safe policy, in-place) # Fix (safe policy, in-place)
vid-repair fix /path/to/videos vid-repair fix /path/to/videos
# Fix with aggressive policy # Fix with aggressive policy (allows re-encode)
vid-repair fix --policy aggressive /path/to/videos vid-repair fix --policy aggressive /path/to/videos
# JSON output # JSON output (for scripts)
vid-repair scan --json /path/to/videos vid-repair scan --json /path/to/videos
# Lint rulesets
vid-repair rules lint
``` ```
Exit codes: ### 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 nonrecursive
```bash
# Disable recursive scanning
vid-repair scan --no-recursive /path/to/videos
```
### Exit codes
- `0` no issues - `0` no issues
- `1` issues found - `1` issues found
- `2` fix failed - `2` fix failed
- `3` fatal error - `3` fatal error
## Config ## Config (Regular Users)
On first run, a commented TOML config is created in the XDG config directory: On first run, a commented TOML config is created in the XDG config directory:
@@ -63,16 +68,66 @@ On first run, a commented TOML config is created in the XDG config directory:
- macOS: `~/Library/Application Support/vid-repair/config.toml` - macOS: `~/Library/Application Support/vid-repair/config.toml`
- Windows: `%APPDATA%/vid-repair/config.toml` - Windows: `%APPDATA%/vid-repair/config.toml`
CLI flags override config values. You can edit this file to set defaults like scan depth, include/exclude patterns, and watch behavior. CLI flags always override config values.
## Rulesets ## Rulesets (Regular Users)
Rules are stored in `rulesets/*.toml`. Use `vid-repair rules lint` before shipping changes. Rulesets tell VidRepair how to interpret ffmpeg error messages. Theyre shipped with the app and already work out of the box.
You generally **do not need to edit them** unless you want to add your own rules or tune behavior.
## Fixtures If you do edit rulesets, run the linter:
Generate fixtures (gitignored) with: ```bash
vid-repair rules lint
```
## Fixtures (Regular Users)
Fixtures are small, generated test videos used to validate the scanner.
**You only need this if you are developing or testing changes.**
If you want to generate them manually:
```bash ```bash
scripts/generate_fixtures.sh scripts/generate_fixtures.sh
``` ```
---
# 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 (Dev)
Rules are datadriven and split by domain in `rulesets/*.toml`.
Before shipping changes:
```bash
vid-repair rules lint
```
## Fixtures (Dev)
Generate fixtures locally (gitignored):
```bash
scripts/generate_fixtures.sh
```
Use fixtures to validate scan logic and rule coverage. Add new fixtures for realworld edge cases (truncated files, corrupted NAL units, etc.).
## Tests
```bash
scripts/check.sh
```
This runs the full test suite and ruleset lint.