diff options
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/doc.rs | 121 |
1 files changed, 61 insertions, 60 deletions
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index 0067e485a..12f7b7dc4 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -1,6 +1,7 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use crate::args::DocFlags; +use crate::args::DocSourceFileFlag; use crate::args::Flags; use crate::colors; use crate::display::write_json_to_stdout; @@ -22,71 +23,71 @@ pub async fn print_docs( doc_flags: DocFlags, ) -> Result<(), AnyError> { let ps = ProcState::build(flags).await?; - let source_file = doc_flags - .source_file - .unwrap_or_else(|| "--builtin".to_string()); - let mut doc_nodes = if source_file == "--builtin" { - let source_file_specifier = - ModuleSpecifier::parse("deno://lib.deno.d.ts").unwrap(); - let content = get_types_declaration_file_text(ps.options.unstable()); - let mut loader = deno_graph::source::MemoryLoader::new( - vec![( - source_file_specifier.to_string(), - deno_graph::source::Source::Module { - specifier: source_file_specifier.to_string(), - content, - maybe_headers: None, + let mut doc_nodes = match doc_flags.source_file { + DocSourceFileFlag::Builtin => { + let source_file_specifier = + ModuleSpecifier::parse("deno://lib.deno.d.ts").unwrap(); + let content = get_types_declaration_file_text(ps.options.unstable()); + let mut loader = deno_graph::source::MemoryLoader::new( + vec![( + source_file_specifier.to_string(), + deno_graph::source::Source::Module { + specifier: source_file_specifier.to_string(), + content, + maybe_headers: None, + }, + )], + Vec::new(), + ); + let analyzer = deno_graph::CapturingModuleAnalyzer::default(); + let graph = deno_graph::create_graph( + vec![(source_file_specifier.clone(), ModuleKind::Esm)], + &mut loader, + deno_graph::GraphOptions { + is_dynamic: false, + imports: None, + resolver: None, + module_analyzer: Some(&analyzer), + reporter: None, }, - )], - Vec::new(), - ); - let analyzer = deno_graph::CapturingModuleAnalyzer::default(); - let graph = deno_graph::create_graph( - vec![(source_file_specifier.clone(), ModuleKind::Esm)], - &mut loader, - deno_graph::GraphOptions { - is_dynamic: false, - imports: None, - resolver: None, - module_analyzer: Some(&analyzer), - reporter: None, - }, - ) - .await; - let doc_parser = doc::DocParser::new( - graph, - doc_flags.private, - analyzer.as_capturing_parser(), - ); - doc_parser.parse_module(&source_file_specifier)?.definitions - } else { - let module_specifier = resolve_url_or_path(&source_file)?; + ) + .await; + let doc_parser = doc::DocParser::new( + graph, + doc_flags.private, + analyzer.as_capturing_parser(), + ); + doc_parser.parse_module(&source_file_specifier)?.definitions + } + DocSourceFileFlag::Path(source_file) => { + let module_specifier = resolve_url_or_path(&source_file)?; - // If the root module has external types, the module graph won't redirect it, - // so instead create a dummy file which exports everything from the actual file being documented. - let root_specifier = resolve_url_or_path("./$deno$doc.ts").unwrap(); - let root = File { - local: PathBuf::from("./$deno$doc.ts"), - maybe_types: None, - media_type: MediaType::TypeScript, - source: format!("export * from \"{}\";", module_specifier).into(), - specifier: root_specifier.clone(), - maybe_headers: None, - }; + // If the root module has external types, the module graph won't redirect it, + // so instead create a dummy file which exports everything from the actual file being documented. + let root_specifier = resolve_url_or_path("./$deno$doc.ts").unwrap(); + let root = File { + local: PathBuf::from("./$deno$doc.ts"), + maybe_types: None, + media_type: MediaType::TypeScript, + source: format!("export * from \"{}\";", module_specifier).into(), + specifier: root_specifier.clone(), + maybe_headers: None, + }; - // Save our fake file into file fetcher cache. - ps.file_fetcher.insert_cached(root); + // Save our fake file into file fetcher cache. + ps.file_fetcher.insert_cached(root); - let graph = ps - .create_graph(vec![(root_specifier.clone(), ModuleKind::Esm)]) - .await?; - let doc_parser = doc::DocParser::new( - graph, - doc_flags.private, - ps.parsed_source_cache.as_capturing_parser(), - ); - doc_parser.parse_with_reexports(&root_specifier)? + let graph = ps + .create_graph(vec![(root_specifier.clone(), ModuleKind::Esm)]) + .await?; + let doc_parser = doc::DocParser::new( + graph, + doc_flags.private, + ps.parsed_source_cache.as_capturing_parser(), + ); + doc_parser.parse_with_reexports(&root_specifier)? + } }; if doc_flags.json { |