Skip to main content

Module dependency_builder

Module dependency_builder 

Source
Expand description

Dependency graph builder that coordinates language-specific extractors.

This module provides a unified interface for building dependency graphs across multiple programming languages. It uses the extractor subsystem to parse import/dependency statements and constructs a DependencyGraph representing the file-level and symbol-level dependencies in a codebase.

§Architecture

DependencyGraphBuilder
  ├─> LanguageDetector (file extension → Language)
  ├─> RustDependencyExtractor (use statements)
  ├─> TypeScriptDependencyExtractor (import/require)
  ├─> PythonDependencyExtractor (import statements)
  └─> GoDependencyExtractor (import blocks)

§Example Usage

use thread_flow::incremental::dependency_builder::DependencyGraphBuilder;
use thread_flow::incremental::storage::InMemoryStorage;
use std::path::Path;

let storage = Box::new(InMemoryStorage::new());
let mut builder = DependencyGraphBuilder::new(storage);

// Extract dependencies from files
builder.extract_file(Path::new("src/main.rs")).await?;
builder.extract_file(Path::new("src/utils.ts")).await?;

// Access the built graph
let graph = builder.graph();
println!("Found {} files with {} dependencies",
         graph.node_count(), graph.edge_count());

// Persist to storage
builder.persist().await?;

Structs§

DependencyGraphBuilder
Coordinates dependency extraction across multiple languages to build a unified dependency graph.
LanguageDetector
Detects programming language from file extension.

Enums§

BuildError
Errors that can occur during dependency graph building.
Language
Supported programming languages for dependency extraction.