stackify_common/
lib.rs

1pub mod api;
2pub mod download;
3#[cfg(test)]
4pub mod tests;
5pub mod types;
6pub mod util;
7
8use color_eyre::eyre::{bail, Result};
9use serde::{Deserialize, Serialize};
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
12pub enum ServiceType {
13    BitcoinMiner = 0,
14    BitcoinFollower = 1,
15    StacksMiner = 2,
16    StacksFollower = 3,
17    StacksSigner = 4,
18    StacksStackerSelf = 5,
19    StacksStackerPool = 6,
20    StackifyEnvironment = 7,
21    StackifyDaemon = 8,
22    StacksTransactionGenerator = 9,
23}
24
25impl Into<i32> for ServiceType {
26    fn into(self) -> i32 {
27        self as i32
28    }
29}
30
31impl From<i32> for ServiceType {
32    fn from(value: i32) -> Self {
33        match value {
34            0 => Self::BitcoinMiner,
35            1 => Self::BitcoinFollower,
36            2 => Self::StacksMiner,
37            3 => Self::StacksFollower,
38            4 => Self::StacksSigner,
39            5 => Self::StacksStackerSelf,
40            6 => Self::StacksStackerPool,
41            7 => Self::StackifyEnvironment,
42            8 => Self::StackifyDaemon,
43            9 => Self::StacksTransactionGenerator,
44            _ => panic!("Invalid service type value: {}", value),
45        }
46    }
47}
48
49impl ServiceType {
50    pub fn from_i32(value: i32) -> Result<Self> {
51        match value {
52            0 => Ok(Self::BitcoinMiner),
53            1 => Ok(Self::BitcoinFollower),
54            2 => Ok(Self::StacksMiner),
55            3 => Ok(Self::StacksFollower),
56            4 => Ok(Self::StacksSigner),
57            5 => Ok(Self::StacksStackerSelf),
58            6 => Ok(Self::StacksStackerPool),
59            7 => Ok(Self::StackifyEnvironment),
60            8 => Ok(Self::StackifyDaemon),
61            9 => Ok(Self::StacksTransactionGenerator),
62            _ => bail!("Invalid service type value: {}", value),
63        }
64    }
65
66    pub fn is(&self, other: i32) -> bool {
67        self.clone() as i32 == other
68    }
69}
70
71#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
72pub enum ServiceState {
73    Running = 1,
74    Stopped = 2,
75    Error = 3,
76}
77
78#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
79pub enum ServiceAction {
80    StartContainer = 1,
81    StopContainer = 2,
82    UpgradeService = 3,
83    StartService = 4,
84    StopService = 5,
85    AttachNetwork = 6,
86    DetachNetwork = 7,
87}
88
89#[derive(Debug, Clone, PartialEq, Eq, Hash)]
90pub enum FileType {
91    Binary = 0,
92    PlainText = 1,
93    HandlebarsTemplate = 2,
94}
95
96impl FileType {
97    pub fn from_i32(value: i32) -> Result<Self> {
98        match value {
99            0 => Ok(Self::Binary),
100            1 => Ok(Self::PlainText),
101            2 => Ok(Self::HandlebarsTemplate),
102            _ => bail!("Invalid file type value: {}", value),
103        }
104    }
105}
106
107#[derive(Debug, Clone, PartialEq, Eq, Hash)]
108pub enum ValueType {
109    String = 0,
110    Integer = 1,
111    Boolean = 2,
112    Enum = 3,
113    StacksKeychain = 4,
114    Service,
115}
116
117impl ValueType {
118    pub fn from_i32(value: i32) -> Result<Self> {
119        match value {
120            0 => Ok(Self::String),
121            1 => Ok(Self::Integer),
122            2 => Ok(Self::Boolean),
123            3 => Ok(Self::Enum),
124            4 => Ok(Self::StacksKeychain),
125            5 => Ok(Self::Service),
126            _ => bail!("Invalid value type value: {}", value),
127        }
128    }
129}
130
131#[derive(Debug, Clone, PartialEq, Eq, Hash)]
132pub enum ConfigElementKind {
133    File,
134    Param,
135}