changeset_operations/traits/
project_provider.rs1use std::collections::HashMap;
2use std::path::{Path, PathBuf};
3
4use changeset_project::{
5 CargoProject, PackageChangesetConfig, RootChangesetConfig, WorkspaceDependencyGraph,
6};
7
8use crate::Result;
9
10pub trait ProjectProvider: Send + Sync {
11 fn discover_project(&self, start_path: &Path) -> Result<CargoProject>;
15
16 fn load_configs(
20 &self,
21 project: &CargoProject,
22 ) -> Result<(RootChangesetConfig, HashMap<String, PackageChangesetConfig>)>;
23
24 fn ensure_changeset_dir(
28 &self,
29 project: &CargoProject,
30 config: &RootChangesetConfig,
31 ) -> Result<PathBuf>;
32}
33
34pub trait DependencyGraphProvider: Send + Sync {
35 fn build_dependency_graph(&self, project: &CargoProject) -> Result<WorkspaceDependencyGraph>;
39}