1mod crate_graph;
2mod ids;
3mod module_graph;
4
5use anyhow::{Context, Result};
6use cargo_metadata::MetadataCommand;
7use code_split_core::GraphBuilder;
8use std::path::Path;
9
10pub fn analyze(workspace: &Path, builder: &mut GraphBuilder) -> Result<()> {
11 let manifest = workspace.join("Cargo.toml");
12 let metadata = MetadataCommand::new()
13 .manifest_path(&manifest)
14 .exec()
15 .with_context(|| format!("running cargo metadata for {}", manifest.display()))?;
16
17 crate_graph::contribute(&metadata, builder);
18 module_graph::contribute(&metadata, builder)?;
19 Ok(())
20}