1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
mod env_info;
use std::path::PathBuf;
use std::env;
use directories::*;
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum IglooInstType
{
Null = -1,
New = 0,
Run = 1,
Flash = 2,
Debug = 3,
Clean = 4,
Erase = 5,
GenDoc = 6,
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum IglooErrType
{
ErrNone = 0,
ErrUnknown = 1,
ConfigNotFound = 2,
ConfigFound = 3,
UnknownInstType = 4,
NewCalledInsideProject = 5,
FolderAlreadyExists = 6,
InvalidProjectName = 7,
InvalidEnvInfo = 8,
InvalidTarget = 9,
FailedToLoadMasterMakeManifest = 10,
FailedToLoadMasterTargetManifest = 11,
FailedToFindTargetScriptsDir = 12,
}
#[derive(Debug)]
#[derive(PartialEq)]
#[derive(Clone)]
pub struct IglooEnvInfo
{
pub cwd: PathBuf,
pub hd: PathBuf,
pub esfd: PathBuf,
}
impl IglooEnvInfo
{
pub fn get_env_info() -> IglooEnvInfo
{
IglooEnvInfo
{
cwd: env::current_dir().unwrap(),
hd: match UserDirs::new()
{
Some(v) => v.home_dir().to_owned(),
None =>
{
println!("Error: Failed to get home directory.\n\
This should never happen. Exiting...");
std::process::exit(1);
}
},
esfd: match std::env::var("ESF_DIR")
{
Ok(v) =>
{
std::path::PathBuf::from(&v.to_owned())
}
Err(e) =>
{
println!("Error: $ESF_DIR not defined as an environment\
variable -- {:?}", e);
std::process::exit(1);
}
}
}
}
}