pub mod go;
pub mod gradle;
pub mod node;
pub mod python;
pub mod rust;
use crate::graph::GraphNode;
use anyhow::Result;
use std::path::{Path, PathBuf};
pub trait EcosystemAdapter: Send + Sync {
fn name(&self) -> &'static str;
fn detect_tool(&self) -> Result<String>;
fn resolve(&self, workspace_path: &Path, frozen: bool) -> Result<PathBuf>;
fn parse_lockfile(&self, lockfile_path: &Path) -> Result<Vec<GraphNode>>;
}