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}