changeset_operations/traits/
init_interaction.rs1use changeset_manifest::{ChangelogLocation, ComparisonLinks, TagFormat, ZeroVersionBehavior};
2
3use crate::Result;
4
5#[derive(Debug, Clone, Copy, Default)]
6pub struct ProjectContext {
7 pub is_single_package: bool,
8}
9
10#[derive(Debug, Clone)]
11pub struct GitSettingsInput {
12 pub commit: bool,
13 pub tags: bool,
14 pub keep_changesets: bool,
15 pub tag_format: TagFormat,
16}
17
18impl Default for GitSettingsInput {
19 fn default() -> Self {
20 Self {
21 commit: true,
22 tags: true,
23 keep_changesets: false,
24 tag_format: TagFormat::default(),
25 }
26 }
27}
28
29#[derive(Debug, Clone, Default)]
30pub struct ChangelogSettingsInput {
31 pub changelog: ChangelogLocation,
32 pub comparison_links: ComparisonLinks,
33}
34
35#[derive(Debug, Clone, Default)]
36pub struct VersionSettingsInput {
37 pub zero_version_behavior: ZeroVersionBehavior,
38}
39
40pub trait InitInteractionProvider: Send + Sync {
41 fn configure_git_settings(&self, context: ProjectContext) -> Result<Option<GitSettingsInput>>;
50
51 fn configure_changelog_settings(
60 &self,
61 context: ProjectContext,
62 ) -> Result<Option<ChangelogSettingsInput>>;
63
64 fn configure_version_settings(&self) -> Result<Option<VersionSettingsInput>>;
70}