Update README with user and developer guides
This commit is contained in:
119
README.md
119
README.md
@@ -1,61 +1,66 @@
|
|||||||
# Vid-Repair
|
# Vid-Repair
|
||||||
|
|
||||||
Vid-Repair is a cross‑platform Rust CLI that scans video files for container/stream/decode problems and applies safe repairs using system `ffmpeg`/`ffprobe`.
|
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`.
|
||||||
|
|
||||||
## Features
|
## Quick Start (Regular Users)
|
||||||
|
|
||||||
- Scan: ffprobe metadata + ffmpeg decode pass
|
### Requirements
|
||||||
- Data‑driven rulesets (TOML) with linting
|
|
||||||
- Safe fix planning (remux/faststart) + optional aggressive re‑encode
|
|
||||||
- Atomic replace + optional keep‑original
|
|
||||||
- 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 non‑recursive
|
||||||
|
|
||||||
|
```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 Vid‑Repair how to interpret ffmpeg error messages. They’re 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 (git‑ignored) 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 data‑driven and split by domain in `rulesets/*.toml`.
|
||||||
|
Before shipping changes:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vid-repair rules lint
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fixtures (Dev)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user