diff --git a/src/analysis.rs b/src/analysis.rs index e22c2a4..cc73e83 100644 --- a/src/analysis.rs +++ b/src/analysis.rs @@ -100,7 +100,7 @@ mod tests { let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let folder_idx = graph .node_indices() .find(|i| graph[*i].name == "foo" && graph[*i].kind == NodeKind::Folder) @@ -125,7 +125,7 @@ mod tests { let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let js_idx = graph .node_indices() .find(|i| graph[*i].name == "index.js" && graph[*i].kind == NodeKind::File) @@ -147,7 +147,7 @@ mod tests { let fs = TestFS::new([("index.js", "import './b.js';"), ("b.js", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let json = graph_to_json(&filter_graph(&graph, true, true, false, true, true, &[])); assert!(json.contains("index.js")); assert!(json.contains("b.js")); @@ -158,7 +158,7 @@ mod tests { let fs = TestFS::new([("a.js", ""), ("b.js", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let dot = graph_to_dot(&filter_graph( &graph, true, diff --git a/src/lib.rs b/src/lib.rs index 9e04c54..5f889f0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -51,23 +51,6 @@ pub struct Node { pub kind: NodeKind, } -#[derive(Clone, Copy)] -pub struct BuildOptions { - pub workers: Option, - pub verbose: bool, - pub color: bool, -} - -impl Default for BuildOptions { - fn default() -> Self { - Self { - workers: None, - verbose: false, - color: true, - } - } -} - pub(crate) fn ensure_folders( rel: &str, data: &mut types::GraphCtx, @@ -105,13 +88,11 @@ pub(crate) fn ensure_folders( /// Build a dependency graph of all JS/TS files within `root`. pub fn build_dependency_graph( root: &VfsPath, - opts: BuildOptions, + workers: Option, logger: &dyn Logger, ) -> anyhow::Result> { let files = traversal::collect_files(root, logger)?; - if opts.verbose { - logger.log(LogLevel::Debug, &format!("found {} files", files.len())); - } + logger.log(LogLevel::Debug, &format!("found {} files", files.len())); let aliases = load_tsconfig_aliases(root, logger)?; let ctx = types::Context { root, @@ -124,10 +105,11 @@ pub fn build_dependency_graph( Box::new(types::js::JsParser), Box::new(types::html::HtmlParser), ]; - let workers = opts.workers.unwrap_or_else(|| num_cpus::get()); - if opts.verbose { - logger.log(LogLevel::Debug, &format!("using {} worker threads", workers)); - } + let workers = workers.unwrap_or_else(|| num_cpus::get()); + logger.log( + LogLevel::Debug, + &format!("using {} worker threads", workers), + ); let edges: Arc>> = Arc::new(Mutex::new(Vec::new())); let pool = rayon::ThreadPoolBuilder::new() .num_threads(workers) @@ -137,7 +119,6 @@ pub fn build_dependency_graph( for path in &files { let parsers = &parsers; let ctx = &ctx; - let verbose = opts.verbose; let edges = edges.clone(); let path_clone = path.clone(); let should_parse = parsers.iter().any(|p| p.can_parse(&path_clone)); @@ -145,14 +126,12 @@ pub fn build_dependency_graph( parsed_files.push(path_clone.clone()); } s.spawn(move |_| { - if verbose { - ctx.logger.log(LogLevel::Debug, &format!("file: {}", path_clone.as_str())); - } + ctx.logger + .log(LogLevel::Debug, &format!("file: {}", path_clone.as_str())); for p in parsers { if p.can_parse(&path_clone) { - if verbose { - ctx.logger.log(LogLevel::Debug, &format!(" parser {}", p.name())); - } + ctx.logger + .log(LogLevel::Debug, &format!(" parser {}", p.name())); match p.parse(&path_clone, ctx) { Ok(mut es) => { if !es.is_empty() { @@ -243,12 +222,14 @@ pub fn build_dependency_graph( } let res = data.graph; - if opts.verbose { - logger.log( - LogLevel::Debug, - &format!("graph: nodes={}, edges={}", res.node_count(), res.edge_count()), - ); - } + logger.log( + LogLevel::Debug, + &format!( + "graph: nodes={}, edges={}", + res.node_count(), + res.edge_count() + ), + ); Ok(res) } @@ -265,7 +246,7 @@ mod tests { let root = fs.root(); let logger = EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let a_idx = graph .node_indices() .find(|i| graph[*i].name == "a.js" && graph[*i].kind == NodeKind::File) @@ -289,7 +270,7 @@ mod tests { let fs = TestFS::new(entries.iter().map(|(p,c)| (p.as_str(), c.as_slice()))); let path = fs.root().join("proj").unwrap(); let logger = EmptyLogger; - let graph = build_dependency_graph(&path, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&path, None, &logger).unwrap(); let main_rel = format!("src/main.{ext_a}"); let util_rel = format!("lib/util.{ext_b}"); diff --git a/src/main.rs b/src/main.rs index ae6c3be..483bc3b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -73,22 +73,18 @@ fn default_color() -> bool { fn main() -> anyhow::Result<()> { let args = Args::parse(); let root: VfsPath = PhysicalFS::new(&args.path).into(); - let logger = dep::ConsoleLogger { color: args.color, verbose: args.verbose }; - let mut graph = dep::build_dependency_graph( - &root, - dep::BuildOptions { - workers: args.workers, - verbose: args.verbose, - color: args.color, - }, - &logger, - )?; + let logger = dep::ConsoleLogger { + color: args.color, + verbose: args.verbose, + }; + let mut graph = dep::build_dependency_graph(&root, args.workers, &logger)?; if args.prune { let before = graph.node_count(); dep::prune_unconnected(&mut graph); - if args.verbose { - logger.log(LogLevel::Debug, &format!("pruned {} nodes", before - graph.node_count())); - } + logger.log( + LogLevel::Debug, + &format!("pruned {} nodes", before - graph.node_count()), + ); } let filtered = dep::filter_graph( &graph, diff --git a/src/output/json.rs b/src/output/json.rs index d9f244c..75849bc 100644 --- a/src/output/json.rs +++ b/src/output/json.rs @@ -32,7 +32,7 @@ mod tests { let fs = TestFS::new([("index.js", "import './b.js';"), ("b.js", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let json = graph_to_json(&filter_graph(&graph, true, true, false, true, true, &[])); assert!(json.contains("index.js")); assert!(json.contains("b.js")); diff --git a/src/tsconfig.rs b/src/tsconfig.rs index 65e0389..6250d1b 100644 --- a/src/tsconfig.rs +++ b/src/tsconfig.rs @@ -88,7 +88,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let idx_index = graph .node_indices() @@ -113,7 +113,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let idx_index = graph .node_indices() @@ -139,7 +139,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let idx_a = graph .node_indices() @@ -169,7 +169,7 @@ mod tests { let fs = TestFS::new([("tsconfig.json", "not json"), ("index.ts", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let res = build_dependency_graph(&root, Default::default(), &logger); + let res = build_dependency_graph(&root, None, &logger); assert!(res.is_ok()); } } diff --git a/src/types/html.rs b/src/types/html.rs index 4ba9af8..ba93190 100644 --- a/src/types/html.rs +++ b/src/types/html.rs @@ -116,7 +116,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = build_dependency_graph(&root, None, &logger).unwrap(); let html_idx = graph .node_indices() .find(|i| graph[*i].name == "index.html" && graph[*i].kind == NodeKind::File) @@ -136,7 +136,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let res = build_dependency_graph(&root, Default::default(), &logger); + let res = build_dependency_graph(&root, None, &logger); assert!(res.is_ok()); } } diff --git a/src/types/js.rs b/src/types/js.rs index de0ee01..5df99c1 100644 --- a/src/types/js.rs +++ b/src/types/js.rs @@ -268,7 +268,7 @@ mod tests { let fs = TestFS::new([("a.js", "import './b.js';"), ("b.js", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); assert!(graph.node_indices().any(|i| graph[i].name == "a.js")); } @@ -277,7 +277,7 @@ mod tests { let fs = TestFS::new([("a.js", "import ???")]); let root = fs.root(); let logger = crate::EmptyLogger; - let res = crate::build_dependency_graph(&root, Default::default(), &logger); + let res = crate::build_dependency_graph(&root, None, &logger); assert!(res.is_ok()); } @@ -315,7 +315,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); let a_idx = graph .node_indices() .find(|i| graph[*i].name == "a.ts" && graph[*i].kind == NodeKind::File) @@ -337,7 +337,7 @@ mod tests { let fs = TestFS::new([("index.js", "import './logo.svg';"), ("logo.svg", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); let js_idx = graph .node_indices() .find(|i| graph[*i].name == "index.js" && graph[*i].kind == NodeKind::File) @@ -361,7 +361,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); let main_idx = graph .node_indices() .find(|i| graph[*i].name == "index.js" && graph[*i].kind == NodeKind::File) @@ -383,7 +383,7 @@ mod tests { let fs = TestFS::new([("a.mjs", "import './b.cjs';"), ("b.cjs", "")]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); let a_idx = graph .node_indices() .find(|i| graph[*i].name == "a.mjs" && graph[*i].kind == NodeKind::File) diff --git a/src/types/monorepo.rs b/src/types/monorepo.rs index c676624..7b714ef 100644 --- a/src/types/monorepo.rs +++ b/src/types/monorepo.rs @@ -84,7 +84,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); let a_idx = graph .node_indices() .find(|i| graph[*i].name == "a" && graph[*i].kind == crate::NodeKind::Package) diff --git a/src/types/package_json.rs b/src/types/package_json.rs index b3b07ff..0b0ea80 100644 --- a/src/types/package_json.rs +++ b/src/types/package_json.rs @@ -125,7 +125,7 @@ mod tests { ]); let root = fs.root(); let logger = crate::EmptyLogger; - let graph = crate::build_dependency_graph(&root, Default::default(), &logger).unwrap(); + let graph = crate::build_dependency_graph(&root, None, &logger).unwrap(); assert!(graph.node_indices().any(|i| graph[i].name == "pkg")); } @@ -134,7 +134,7 @@ mod tests { let fs = TestFS::new([("pkg/package.json", "not json")]); let root = fs.root(); let logger = crate::EmptyLogger; - let res = crate::build_dependency_graph(&root, Default::default(), &logger); + let res = crate::build_dependency_graph(&root, None, &logger); assert!(res.is_ok()); } @@ -143,7 +143,7 @@ mod tests { let fs = TestFS::new([("pkg/package.json", "notjson")]); let root = fs.root(); let logger = crate::EmptyLogger; - let res = crate::build_dependency_graph(&root, Default::default(), &logger); + let res = crate::build_dependency_graph(&root, None, &logger); assert!(res.is_ok()); } }