changeset_operations/traits/
manifest_writer.rs1use std::path::Path;
2
3use changeset_manifest::{InitConfig, MetadataSection};
4use semver::Version;
5
6use crate::Result;
7use crate::traits::InheritedVersionChecker;
8
9pub trait FullManifestWriter:
10 ManifestVersionWriter + ManifestDependencyWriter + WorkspaceVersionManager + InheritedVersionChecker
11{
12}
13impl<
14 T: ManifestVersionWriter
15 + ManifestDependencyWriter
16 + WorkspaceVersionManager
17 + InheritedVersionChecker,
18> FullManifestWriter for T
19{
20}
21
22pub trait ManifestVersionWriter: Send + Sync {
23 fn write_version(&self, manifest_path: &Path, new_version: &Version) -> Result<()>;
27
28 fn verify_version(&self, manifest_path: &Path, expected: &Version) -> Result<()>;
32}
33
34pub trait ManifestDependencyWriter: Send + Sync {
35 fn update_dependency_version(
39 &self,
40 manifest_path: &Path,
41 dependency_name: &str,
42 new_version: &Version,
43 ) -> Result<bool>;
44}
45
46pub trait WorkspaceVersionManager: Send + Sync {
47 fn read_workspace_version(&self, manifest_path: &Path) -> Result<Option<Version>>;
53
54 fn remove_workspace_version(&self, manifest_path: &Path) -> Result<()>;
58
59 fn write_workspace_version(&self, manifest_path: &Path, version: &Version) -> Result<()>;
63}
64
65pub trait ManifestMetadataWriter: Send + Sync {
66 fn write_metadata(
70 &self,
71 manifest_path: &Path,
72 section: MetadataSection,
73 config: &InitConfig,
74 ) -> Result<()>;
75}