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(
34        &self,
35        available: &[PackageInfo],
36        display_labels: Option<&[String]>,
37    ) -> Result<PackageSelection>;
38
39    /// # Errors
40    ///
41    /// Returns an error if the interaction cannot be completed.
42    fn select_bump_type(&self, package_name: &str) -> Result<BumpSelection>;
43
44    /// # Errors
45    ///
46    /// Returns an error if the interaction cannot be completed.
47    fn select_category(&self) -> Result<CategorySelection>;
48
49    /// # Errors
50    ///
51    /// Returns an error if the interaction cannot be completed.
52    fn get_description(&self) -> Result<DescriptionInput>;
53}