changeset_operations/traits/
manage_interaction.rs1use changeset_core::PackageInfo;
2
3use crate::Result;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub enum PrereleaseAction {
7 Add,
8 Remove,
9 Graduate,
10 Done,
11}
12
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub enum GraduationAction {
15 Add,
16 Remove,
17 Done,
18}
19
20#[derive(Debug, Clone, PartialEq, Eq)]
21pub enum MenuSelection<T> {
22 Selected(T),
23 Cancelled,
24}
25
26#[allow(clippy::missing_errors_doc)]
30pub trait PrereleaseInteractionProvider: Send + Sync {
31 fn select_prerelease_action(&self) -> Result<MenuSelection<PrereleaseAction>>;
32
33 fn select_package_for_prerelease(
34 &self,
35 available: &[&PackageInfo],
36 ) -> Result<MenuSelection<usize>>;
37
38 fn get_prerelease_tag(&self) -> Result<String>;
39
40 fn select_package_to_remove_prerelease(
44 &self,
45 items: &[(&str, &str)],
46 ) -> Result<MenuSelection<usize>>;
47}
48
49#[allow(clippy::missing_errors_doc)]
53pub trait GraduationInteractionProvider: Send + Sync {
54 fn select_graduation_action(&self) -> Result<MenuSelection<GraduationAction>>;
55
56 fn select_package_for_graduation(
57 &self,
58 eligible: &[&PackageInfo],
59 ) -> Result<MenuSelection<usize>>;
60
61 fn select_package_to_remove_graduation(&self, items: &[String])
62 -> Result<MenuSelection<usize>>;
63}