about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNixon Enraght-Moony <nixon.emoony@gmail.com>2023-01-02 19:40:00 +0000
committerNixon Enraght-Moony <nixon.emoony@gmail.com>2023-01-03 14:54:46 +0000
commit855b7e8cf3963b9f187249f1f38b6bb2baa9c353 (patch)
tree7f912993b94525792049b827d4002cc6f367c0b4
parent7680b164b00af55e7af64bdc8027b6deb4fb8233 (diff)
downloadrust-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.rs32
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),