Skip to main content

changeset_operations/traits/
interaction.rs

1use changeset_core::{BumpType, ChangeCategory, PackageInfo};
2
3use crate::Result;
4
5#[derive(Debug, Clone)]
6pub enum PackageSelection {
7    Selected(Vec<PackageInfo>),
8    Cancelled,
9}
10
11#[derive(Debug, Clone)]
12pub enum BumpSelection {
13    Selected(BumpType),
14    Cancelled,
15}
16
17#[derive(Debug, Clone)]
18pub enum CategorySelection {
19    Selected(ChangeCategory),
20    Cancelled,
21}
22
23#[derive(Debug, Clone)]
24pub enum DescriptionInput {
25    Provided(String),
26    Cancelled,
27}
28
29pub trait InteractionProvider: Send + Sync {
30    /// # Errors
31    ///
32    /// Returns an error if the interaction cannot be completed.
33    fn select_packages(&self, available: &[PackageInfo]) -> Result<PackageSelection>;
34
35    /// # Errors
36    ///
37    /// Returns an error if the interaction cannot be completed.
38    fn select_bump_type(&self, package_name: &str) -> Result<BumpSelection>;
39
40    /// # Errors
41    ///
42    /// Returns an error if the interaction cannot be completed.
43    fn select_category(&self) -> Result<CategorySelection>;
44
45    /// # Errors
46    ///
47    /// Returns an error if the interaction cannot be completed.
48    fn get_description(&self) -> Result<DescriptionInput>;
49}