From 8acf059ac683ff13c6973914c57caa0ef07d6d9a Mon Sep 17 00:00:00 2001 From: David Sherret Date: Sat, 4 Nov 2023 00:43:54 -0400 Subject: fix(doc): `deno doc --lint mod.ts` should output how many files checked (#21084) As pointed out in https://github.com/denoland/deno/issues/21067 , it's confusing that `deno doc --lint mod.ts` outputs the documentation to stdout on success. Instead, it would be better if it outputted how many files were checked similar to what `deno lint` does on success. It still outputs the documentation if `--lint` or `--html` are provided so this is non-breaking. --- cli/tools/doc.rs | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'cli/tools') diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index 9c88c8e84..75a559af1 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -138,9 +138,9 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { let mut doc_nodes_by_url = IndexMap::with_capacity(module_specifiers.len()); - for module_specifier in &module_specifiers { - let nodes = doc_parser.parse_with_reexports(module_specifier)?; - doc_nodes_by_url.insert(module_specifier.clone(), nodes); + for module_specifier in module_specifiers { + let nodes = doc_parser.parse_with_reexports(&module_specifier)?; + doc_nodes_by_url.insert(module_specifier, nodes); } if doc_flags.lint { @@ -157,9 +157,23 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { .boxed_local() .await } else { - let doc_nodes: Vec = - doc_nodes_by_url.values().flatten().cloned().collect(); - print_docs(doc_flags, doc_nodes) + let modules_len = doc_nodes_by_url.len(); + let doc_nodes = + doc_nodes_by_url.into_values().flatten().collect::>(); + + if doc_flags.json { + write_json_to_stdout(&doc_nodes) + } else if doc_flags.lint { + // don't output docs if running with only the --lint flag + log::info!( + "Checked {} file{}", + modules_len, + if modules_len == 1 { "" } else { "s" } + ); + Ok(()) + } else { + print_docs_to_stdout(doc_flags, doc_nodes) + } } } @@ -204,14 +218,10 @@ async fn generate_docs_directory( Ok(()) } -fn print_docs( +fn print_docs_to_stdout( doc_flags: DocFlags, mut doc_nodes: Vec, ) -> Result<(), AnyError> { - if doc_flags.json { - return write_json_to_stdout(&doc_nodes); - } - doc_nodes.retain(|doc_node| doc_node.kind != doc::DocNodeKind::Import); let details = if let Some(filter) = doc_flags.filter { let nodes = doc::find_nodes_by_name_recursively(doc_nodes, filter.clone()); -- cgit v1.2.3