env.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. use std::fmt::Display;
  2. use crate::log::logger;
  3. use std::str::FromStr;
  4. const DEFAULT_BOOTDEV: &str = "/dev/mmcblk0p1";
  5. const DEFAULT_BOOTFS: &str = "vfat";
  6. const DEFAULT_RUMIA_DEBUG: &str = "0";
  7. pub fn get_env_with_default<T>(varname: &str, default: T) -> String
  8. where T : ToString + Display
  9. {
  10. let res = std::env::var(varname);
  11. match res {
  12. Ok(v) => {
  13. if v.is_empty() {
  14. logger().info("env", format!("use default '{}' value: {}", varname, default).as_str());
  15. default.to_string()
  16. }else{
  17. v
  18. }
  19. },
  20. Err(err) => {
  21. logger().warn("env", format!("failed get env var '{}': {}", varname, err).as_str());
  22. logger().info("env", format!("use default '{}' value: {}", varname, default).as_str());
  23. default.to_string()
  24. }
  25. }
  26. }
  27. pub fn get_debug() -> bool {
  28. let dbg_str = get_env_with_default("RUMIA_DEBUG", DEFAULT_RUMIA_DEBUG);
  29. let res = FromStr::from_str(dbg_str.as_str());
  30. let num: u32 = match res {
  31. Ok(v) => {
  32. v
  33. }
  34. Err(err) => {
  35. logger().warn("env", format!("failed parse env var 'RUMIA_DEBUG': can not convert to u32: {:?}", err).as_str());
  36. 0
  37. }
  38. };
  39. num > 0
  40. }
  41. pub fn get_bootdev() -> String {
  42. get_env_with_default("bootdev", DEFAULT_BOOTDEV)
  43. }
  44. pub fn get_bootfs() -> String {
  45. get_env_with_default("bootfs", DEFAULT_BOOTFS)
  46. }