workspacer_interface/
workspace_interface.rs1crate::ix!();
3
4pub trait WorkspaceInterface<P,T>
5: GetCrates<P,T>
6+ Send
7+ Sync
8+ TryPublish<Error=WorkspaceError>
9+ NameAllFiles<Error=WorkspaceError>
10+ EnsureGitClean<Error=GitError>
11+ NumCrates
12+ PinAllWildcardDependencies<Error=WorkspaceError>
13+ CleanupWorkspace
14+ WatchAndReload
15+ RunTestsWithCoverage
16+ GetCargoMetadata
17+ RebuildOrTest
18+ Analyze
19+ GenerateDocs
20+ RunLinting
21+ DetectCircularDependencies
22+ GenerateDependencyTree
23+ ValidateIntegrity
24+ ReadyForCargoPublish<Error=WorkspaceError>
25+ AsyncTryFrom<P>
26+ AsyncPathValidator
27+ AsyncFindItems
28+ AsRef<Path>
29where
30for<'async_trait> P: From<PathBuf> + AsRef<Path> + Send + Sync + 'async_trait,
31T: CrateHandleInterface<P>
32{}
33
34#[async_trait]
35pub trait EnsureGitClean {
36 type Error;
37 async fn ensure_git_clean(&self) -> Result<(), Self::Error>;
38}
39
40#[async_trait]
41pub trait PinAllWildcardDependencies {
42 type Error;
43 async fn pin_all_wildcard_dependencies(&self) -> Result<(), Self::Error>;
44}
45
46pub trait GetCrates<P,T>
47where
48 for<'async_trait> P: From<PathBuf> + AsRef<Path> + Send + Sync + 'async_trait,
49 T: CrateHandleInterface<P>
50{
51 fn crates(&self) -> &[T];
52}
53
54pub trait NumCrates {
55 fn n_crates(&self) -> usize;
56}
57
58#[async_trait]
59pub trait CleanupWorkspace {
60
61 async fn cleanup_workspace(&self) -> Result<(), WorkspaceError>;
62}
63
64#[async_trait]
65pub trait WatchAndReload {
66
67 type Error;
68
69 async fn watch_and_reload(
70 &self,
71 tx: Option<mpsc::Sender<Result<(), WorkspaceError>>>,
72 runner: Arc<dyn CommandRunner + Send + Sync + 'static>,
73 cancel_token: CancellationToken,
74 ) -> Result<(), Self::Error>;
75
76 fn is_relevant_change(&self, path: &Path) -> bool;
77}
78
79#[async_trait]
80pub trait RunTestsWithCoverage {
81
82 type Report;
83 type Error;
84
85 async fn run_tests_with_coverage(&self)
86 -> Result<Self::Report, Self::Error>;
87}
88
89#[async_trait]
90pub trait GetCargoMetadata {
91
92 type Error;
93 async fn get_cargo_metadata(&self) -> Result<Metadata, Self::Error>;
94}
95
96#[async_trait]
97pub trait RebuildOrTest {
98
99 type Error;
100
101 async fn rebuild_or_test(&self, runner: &dyn CommandRunner) -> Result<(), Self::Error>;
102}
103
104#[async_trait]
105pub trait Analyze {
106 type Analysis;
107 type Error;
108
109 async fn analyze(&self) -> Result<Self::Analysis, Self::Error>;
110}
111
112#[async_trait]
113pub trait GenerateDocs {
114 type Error;
115 async fn generate_docs(&self) -> Result<(), Self::Error>;
116}
117
118#[async_trait]
119pub trait RunLinting {
120
121 type Report;
122 type Error;
123 async fn run_linting(&self) -> Result<Self::Report, Self::Error>;
124}
125
126#[async_trait]
127pub trait DetectCircularDependencies {
128
129 type Error;
130 async fn detect_circular_dependencies(&self) -> Result<(), Self::Error>;
131}
132
133#[async_trait]
134pub trait GenerateDependencyTree {
135
136 type Tree;
137 type Error;
138
139 async fn generate_dependency_tree(&self) -> Result<Self::Tree, Self::Error>;
140 async fn generate_dependency_tree_dot(&self) -> Result<String, Self::Error>;
141}