diff options
| author | Nixon Enraght-Moony <nixon.emoony@gmail.com> | 2023-01-02 19:40:00 +0000 |
|---|---|---|
| committer | Nixon Enraght-Moony <nixon.emoony@gmail.com> | 2023-01-03 14:54:46 +0000 |
| commit | 855b7e8cf3963b9f187249f1f38b6bb2baa9c353 (patch) | |
| tree | 7f912993b94525792049b827d4002cc6f367c0b4 | |
| parent | 7680b164b00af55e7af64bdc8027b6deb4fb8233 (diff) | |
| download | rust-855b7e8cf3963b9f187249f1f38b6bb2baa9c353.tar.gz rust-855b7e8cf3963b9f187249f1f38b6bb2baa9c353.zip | |
jsondoclint: Add `--verbose` flag.
Without verbose:
0:61941:36627 not in index or paths, but refered to at '$.index["0:62007"].inner.for.inner.id' and 12 more
With verbose:
0:10808:27206 not in index or paths, but refered to at '$.index["0:10813"].inner.for.inner.id', '$.index["0:52495"].inner.for.inner.id', '$.index["a:0:2666:215-0:10808:27206"].inner.for.inner.id', '$.index["a:0:2680:223-0:10808:27206"].inner.for.inner.id', '$.index["a:0:2730:7845-0:10808:27206"].inner.for.inner.id', '$.index["a:0:7731:21706-0:10808:27206"].inner.for.inner.id', '$.index["a:0:7732:21705-0:10808:27206"].inner.for.inner.id'
| -rw-r--r-- | src/tools/jsondoclint/src/main.rs | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/tools/jsondoclint/src/main.rs b/src/tools/jsondoclint/src/main.rs index 91a7aeb063f..89965dc2403 100644 --- a/src/tools/jsondoclint/src/main.rs +++ b/src/tools/jsondoclint/src/main.rs @@ -24,10 +24,14 @@ enum ErrorKind { struct Cli { /// The path to the json file to be linted path: String, + + /// Show verbose output + #[arg(long)] + verbose: bool, } fn main() -> Result<()> { - let Cli { path } = Cli::parse(); + let Cli { path, verbose } = Cli::parse(); let contents = fs::read_to_string(&path)?; let krate: Crate = serde_json::from_str(&contents)?; @@ -53,11 +57,27 @@ fn main() -> Result<()> { err.id.0, json_find::to_jsonpath(&sel) ), - [sel, ..] => eprintln!( - "{} not in index or paths, but refered to at '{}' and more", - err.id.0, - json_find::to_jsonpath(&sel) - ), + [sel, ..] => { + if verbose { + let sels = sels + .iter() + .map(json_find::to_jsonpath) + .map(|i| format!("'{i}'")) + .collect::<Vec<_>>() + .join(", "); + eprintln!( + "{} not in index or paths, but refered to at {sels}", + err.id.0 + ); + } else { + eprintln!( + "{} not in index or paths, but refered to at '{}' and {} more", + err.id.0, + json_find::to_jsonpath(&sel), + sels.len() - 1, + ) + } + } } } ErrorKind::Custom(msg) => eprintln!("{}: {}", err.id.0, msg), |
