summaryrefslogtreecommitdiff
path: root/cli/tools/doc.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-11-04 00:43:54 -0400
committerGitHub <noreply@github.com>2023-11-04 04:43:54 +0000
commit8acf059ac683ff13c6973914c57caa0ef07d6d9a (patch)
tree7aa9d891f6a55f4652f1c224df5ba87617291456 /cli/tools/doc.rs
parentefa1c1c9644237e82ec19a3e9ccac7e393d20e52 (diff)
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.
Diffstat (limited to 'cli/tools/doc.rs')
-rw-r--r--cli/tools/doc.rs32
1 files changed, 21 insertions, 11 deletions
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::DocNode> =
- 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::<Vec<_>>();
+
+ 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<deno_doc::DocNode>,
) -> 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());