Skip to main content

changeset_operations/traits/
changelog_writer.rs

1use std::path::{Path, PathBuf};
2
3use changeset_changelog::{RepositoryInfo, VersionRelease};
4
5use crate::Result;
6
7#[derive(Debug, Clone)]
8pub struct ChangelogWriteResult {
9    pub path: PathBuf,
10    pub created: bool,
11}
12
13pub trait ChangelogWriter: Send + Sync {
14    /// # Errors
15    ///
16    /// Returns an error if the changelog cannot be read or written.
17    fn write_release(
18        &self,
19        changelog_path: &Path,
20        release: &VersionRelease,
21        repo_info: Option<&RepositoryInfo>,
22        previous_version: Option<&str>,
23    ) -> Result<ChangelogWriteResult>;
24
25    fn changelog_exists(&self, path: &Path) -> bool;
26
27    /// # Errors
28    ///
29    /// Returns an error if the changelog cannot be restored.
30    fn restore_changelog(&self, path: &Path, content: &str) -> Result<()>;
31
32    /// # Errors
33    ///
34    /// Returns an error if the changelog cannot be deleted.
35    fn delete_changelog(&self, path: &Path) -> Result<()>;
36}