changeset_operations/traits/
interaction.rs1use 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 fn select_packages(
34 &self,
35 available: &[PackageInfo],
36 display_labels: Option<&[String]>,
37 ) -> Result<PackageSelection>;
38
39 fn select_bump_type(&self, package_name: &str) -> Result<BumpSelection>;
43
44 fn select_category(&self) -> Result<CategorySelection>;
48
49 fn get_description(&self) -> Result<DescriptionInput>;
53}