Skip to main content

systemprompt_logging/services/cli/
types.rs

1//! CLI display types: item status, module tags, icons.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum ItemStatus {
8    Missing,
9    Applied,
10    Failed,
11    Valid,
12    Disabled,
13    Pending,
14}
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq)]
17pub enum ModuleType {
18    Schema,
19    Seed,
20    Module,
21    Configuration,
22}
23
24#[derive(Debug, Clone, Copy, PartialEq, Eq)]
25pub enum MessageLevel {
26    Success,
27    Warning,
28    Error,
29    Info,
30}
31
32#[derive(Debug, Clone, Copy)]
33pub enum IconType {
34    Status(ItemStatus),
35    Module(ModuleType),
36    Message(MessageLevel),
37    Action(ActionType),
38}
39
40#[derive(Debug, Clone, Copy)]
41pub enum ColorType {
42    Status(ItemStatus),
43    Message(MessageLevel),
44    Emphasis(EmphasisType),
45}
46
47#[derive(Debug, Clone, Copy)]
48pub enum ActionType {
49    Install,
50    Update,
51    Arrow,
52}
53
54#[derive(Debug, Clone, Copy)]
55pub enum EmphasisType {
56    Highlight,
57    Dim,
58    Bold,
59    Underlined,
60}
61
62impl From<ItemStatus> for IconType {
63    fn from(status: ItemStatus) -> Self {
64        Self::Status(status)
65    }
66}
67
68impl From<ModuleType> for IconType {
69    fn from(module_type: ModuleType) -> Self {
70        Self::Module(module_type)
71    }
72}
73
74impl From<MessageLevel> for IconType {
75    fn from(level: MessageLevel) -> Self {
76        Self::Message(level)
77    }
78}
79
80impl From<ActionType> for IconType {
81    fn from(action: ActionType) -> Self {
82        Self::Action(action)
83    }
84}
85
86impl From<ItemStatus> for ColorType {
87    fn from(status: ItemStatus) -> Self {
88        Self::Status(status)
89    }
90}
91
92impl From<MessageLevel> for ColorType {
93    fn from(level: MessageLevel) -> Self {
94        Self::Message(level)
95    }
96}
97
98impl From<EmphasisType> for ColorType {
99    fn from(emphasis: EmphasisType) -> Self {
100        Self::Emphasis(emphasis)
101    }
102}