libaki_mcycle/conf/
mod.rs1pub use self::parse::parse_cmdopts;
2use crate::util::OptUcXParam;
3pub use parse::CmdOptConf;
4
5mod parse;
6
7impl CmdOptConf {
8 pub fn is_opt_uc_x_help(&self) -> bool {
9 for o in self.opt_uc_x.iter() {
10 if let OptUcXParam::Help = o {
11 return true;
12 }
13 }
14 false
15 }
16 pub fn is_opt_uc_x_package_version_info(&self) -> bool {
17 for o in self.opt_uc_x.iter() {
18 if let OptUcXParam::RustVersionInfo = o {
19 return true;
20 }
21 }
22 false
23 }
24}
25
26use std::env;
27
28#[allow(dead_code)]
29#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
30pub enum Color {
31 #[default]
32 None,
33 Red,
34 Green,
35 Blue,
36 Cyan,
37 Magenta,
38 Yellow,
39}
40
41#[cfg(test)]
42mod debug {
43 #[test]
44 fn size_of() {
45 assert_eq!(std::mem::size_of::<super::Color>(), 1);
46 }
47}
48
49static COLOR_RED_START: &str = "\u{1B}[31m";
59static COLOR_GREEN_START: &str = "\u{1B}[32m";
60static COLOR_BLUE_START: &str = "\u{1B}[34m";
61static COLOR_CYAN_START: &str = "\u{1B}[36m";
62static COLOR_MAGENTA_START: &str = "\u{1B}[35m";
63static COLOR_YELLOW_START: &str = "\u{1B}[33m";
64static COLOR_END: &str = "\u{1B}[0m";
65
66#[derive(Debug)]
67pub struct EnvConf {
68 pub color_seq_red_start: String,
69 pub color_seq_green_start: String,
70 pub color_seq_blue_start: String,
71 pub color_seq_cyan_start: String,
72 pub color_seq_magenta_start: String,
73 pub color_seq_yellow_start: String,
74 pub color_seq_end: String,
75}
76impl EnvConf {
77 pub fn new() -> Self {
78 let a_color_red_start = match env::var("AKI_MCYCLE_COLOR_SEQ_RED_ST") {
80 Ok(v) => v,
81 Err(_) => String::from(COLOR_RED_START),
82 };
83 let a_color_green_start = match env::var("AKI_MCYCLE_COLOR_SEQ_GREEN_ST") {
84 Ok(v) => v,
85 Err(_) => String::from(COLOR_GREEN_START),
86 };
87 let a_color_blue_start = match env::var("AKI_MCYCLE_COLOR_SEQ_BLUE_ST") {
88 Ok(v) => v,
89 Err(_) => String::from(COLOR_BLUE_START),
90 };
91 let a_color_cyan_start = match env::var("AKI_MCYCLE_COLOR_SEQ_CYAN_ST") {
92 Ok(v) => v,
93 Err(_) => String::from(COLOR_CYAN_START),
94 };
95 let a_color_magenta_start = match env::var("AKI_MCYCLE_COLOR_SEQ_MAGENTA_ST") {
96 Ok(v) => v,
97 Err(_) => String::from(COLOR_MAGENTA_START),
98 };
99 let a_color_yellow_start = match env::var("AKI_MCYCLE_COLOR_SEQ_YELLOW_ST") {
100 Ok(v) => v,
101 Err(_) => String::from(COLOR_YELLOW_START),
102 };
103 let a_color_end = match env::var("AKI_MCYCLE_COLOR_SEQ_ED") {
104 Ok(v) => v,
105 Err(_) => String::from(COLOR_END),
106 };
107 Self {
109 color_seq_red_start: a_color_red_start,
110 color_seq_green_start: a_color_green_start,
111 color_seq_blue_start: a_color_blue_start,
112 color_seq_cyan_start: a_color_cyan_start,
113 color_seq_magenta_start: a_color_magenta_start,
114 color_seq_yellow_start: a_color_yellow_start,
115 color_seq_end: a_color_end,
116 }
117 }
118}
119impl std::default::Default for EnvConf {
120 fn default() -> EnvConf {
121 EnvConf::new()
122 }
123}
124
125impl<IKV, K, V> From<IKV> for EnvConf
126where
127 IKV: IntoIterator<Item = (K, V)>,
128 K: AsRef<std::ffi::OsStr>,
129 V: AsRef<std::ffi::OsStr>,
130{
131 fn from(ary: IKV) -> Self {
132 let mut r = Self::new();
133 for a in ary {
134 match a.0.as_ref().to_string_lossy().to_string().as_str() {
135 "AKI_MCYCLE_COLOR_SEQ_RED_ST" => {
136 r.color_seq_red_start = a.1.as_ref().to_string_lossy().to_string();
137 }
138 "AKI_MCYCLE_COLOR_SEQ_GREEN_ST" => {
139 r.color_seq_green_start = a.1.as_ref().to_string_lossy().to_string();
140 }
141 "AKI_MCYCLE_COLOR_SEQ_BLUE_ST" => {
142 r.color_seq_blue_start = a.1.as_ref().to_string_lossy().to_string();
143 }
144 "AKI_MCYCLE_COLOR_SEQ_CYAN_ST" => {
145 r.color_seq_cyan_start = a.1.as_ref().to_string_lossy().to_string();
146 }
147 "AKI_MCYCLE_COLOR_SEQ_MAGENTA_ST" => {
148 r.color_seq_magenta_start = a.1.as_ref().to_string_lossy().to_string();
149 }
150 "AKI_MCYCLE_COLOR_SEQ_YELLOW_ST" => {
151 r.color_seq_yellow_start = a.1.as_ref().to_string_lossy().to_string();
152 }
153 "AKI_MCYCLE_COLOR_SEQ_ED" => {
154 r.color_seq_end = a.1.as_ref().to_string_lossy().to_string();
155 }
156 _ => (),
157 }
158 }
159 r
160 }
161}