pdftract/crates/pdftract-cli/Cargo.toml
jedarden 6a35bdd869 feat(pdftract-29z7b): implement unified diagnostic system + CLI commands
- Added `cmd_explain_diagnostic` function to CLI for detailed diagnostic code explanation
- Added `--list-diagnostics` and `--explain-diagnostic <code>` CLI commands
- Verified all Phase 1.1-1.5 modules use unified DiagCode (lexer, parser, xref, stream, catalog, outline, pages)
- DIAGNOSTIC_CATALOG provides metadata for all 61 diagnostic codes
- Diagnostic struct size: 56 bytes (within 48-64 target range)
- emit! macro provides ergonomic diagnostic emission
- INV-8 maintained: no panics in error paths

All diagnostic codes follow naming convention:
- STRUCT_*: PDF structure errors
- STREAM_*: Stream decoder errors
- XREF_*: Cross-reference table errors
- ENCRYPTION_*: Encryption-related errors
- OCR_*: OCR pipeline errors
- REMOTE_*: Remote source errors
- PAGE_*: Page-level errors
- FONT_*: Font pipeline errors
- GSTATE_*: Graphics state errors
- LAYOUT_*: Layout and reading order errors
- MCP_*: MCP server errors
- CACHE_*: Cache errors

References: Phase 1.6 (error recovery), INV-8, Phase 0.4 (clippy enforces doc comments)
2026-05-22 22:38:31 -04:00

33 lines
778 B
TOML

[package]
name = "pdftract-cli"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
publish = true
[[bin]]
name = "pdftract"
path = "src/main.rs"
[[bin]]
name = "generate_lzw_fixtures"
path = "../../tests/fixtures/generate_lzw_fixtures_main.rs"
default-run = "pdftract"
[dependencies]
anyhow = { workspace = true }
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4.5", features = ["derive"] }
lzw = { workspace = true }
pdftract-core = { path = "../pdftract-core" }
regex = "1.10"
secrecy = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = "1.0"
tempfile = "3"
tera = "1"
tokio = { version = "1", features = ["full"] }
walkdir = "2"