windjammer_runtime/
env.rs1pub fn var(key: &str) -> Result<String, String> {
7 std::env::var(key).map_err(|e| e.to_string())
8}
9
10pub fn get_or(key: &str, default: &str) -> String {
12 std::env::var(key).unwrap_or_else(|_| default.to_string())
13}
14
15pub fn get(key: &str) -> Option<String> {
17 std::env::var(key).ok()
18}
19
20pub fn set_var(key: &str, value: &str) {
22 std::env::set_var(key, value);
23}
24
25pub fn remove_var(key: &str) {
27 std::env::remove_var(key);
28}
29
30pub fn vars() -> Vec<(String, String)> {
32 std::env::vars().collect()
33}
34
35pub fn current_dir() -> Result<String, String> {
37 std::env::current_dir()
38 .map(|p| p.to_string_lossy().to_string())
39 .map_err(|e| e.to_string())
40}
41
42pub fn current_exe() -> Result<String, String> {
44 std::env::current_exe()
45 .map(|p| p.to_string_lossy().to_string())
46 .map_err(|e| e.to_string())
47}
48
49pub fn args() -> Vec<String> {
51 std::env::args().collect()
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57
58 #[test]
59 fn test_set_get_var() {
60 set_var("WINDJAMMER_TEST", "hello");
61 assert_eq!(var("WINDJAMMER_TEST"), Ok("hello".to_string()));
62 remove_var("WINDJAMMER_TEST");
63 assert!(var("WINDJAMMER_TEST").is_err());
64 }
65
66 #[test]
67 fn test_current_dir() {
68 let dir = current_dir();
69 assert!(dir.is_ok());
70 }
71
72 #[test]
73 fn test_args() {
74 let args = args();
75 assert!(!args.is_empty());
76 }
77}