- Fix panic on empty input when stdin is piped
- ID: stdin-panic
- Details:
cargo run -- parse < /dev/nullpanics withunwrap()on empty reader. UseBufRead::read_linewith proper EOF handling instead ofunwrap(). - Files:
src/input.rs - Acceptance:
cargo test -- --ignored test_empty_stdinpasses, no panic on empty input
-
Add
--formatflag for JSON and TOML output- Tags: feature
- Details: Currently only outputs plain text. Add
clapargument--format <json|toml|text>. Useserde_jsonandtomlcrates for serialization. Default to text. - Files:
src/cli.rs,src/output.rs - Blocked by: stdin-panic
-
Add integration tests for all subcommands
- Tags: testing
- Details: Use
assert_cmdandpredicatescrates. Cover:parsewith valid/invalid input filesvalidatewith malformed data--format jsonoutput structure- Exit codes (0 success, 1 validation error, 2 usage error)
- Files:
tests/cli.rs - Acceptance:
cargo test --test clipasses, all subcommands covered
- Run
clippywith pedantic lints and fix all warnings- Details: Add
#![warn(clippy::pedantic)]tosrc/main.rs. Fix all warnings. Addclippyto CI. - Acceptance:
cargo clippy -- -D warningsexits 0
- Details: Add
- Add shell completions generation via
clap_complete- Details: Add
completionssubcommand that generates shell completions for bash, zsh, fish. Document in README.
- Details: Add
- Publish to crates.io with proper metadata
- Tags: release
- Details: Fill in
Cargo.tomlmetadata (description, license, repository, keywords, categories). Runcargo publish --dry-runfirst.