changeset_operations/traits/
project_provider.rs1use std::collections::HashMap;
2use std::path::{Path, PathBuf};
3
4use changeset_project::{CargoProject, PackageChangesetConfig, RootChangesetConfig};
5
6use crate::Result;
7
8pub trait ProjectProvider: Send + Sync {
9 fn discover_project(&self, start_path: &Path) -> Result<CargoProject>;
13
14 fn load_configs(
18 &self,
19 project: &CargoProject,
20 ) -> Result<(RootChangesetConfig, HashMap<String, PackageChangesetConfig>)>;
21
22 fn ensure_changeset_dir(
26 &self,
27 project: &CargoProject,
28 config: &RootChangesetConfig,
29 ) -> Result<PathBuf>;
30}