env.rs 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. use toml::Value;
  2. use crate::{cfg, syscall};
  3. use crate::logger::LogWriter;
  4. pub async fn load_env(logger: LogWriter) {
  5. let cfg_inst = cfg::CFG.get().await;
  6. let cfg_etc = cfg_inst.get_etc_cfg();
  7. let cfg_boot = cfg_inst.get_boot_cfg();
  8. logger.debug("load env vars...").await;
  9. for (k, v) in cfg_etc.env.iter(){
  10. match v {
  11. Value::String(val) => {
  12. logger.debug(format!("'{}'='{}'", k, val).as_str()).await;
  13. std::env::set_var(k, val);
  14. }
  15. _ => {
  16. logger.warn(format!("invalid var '{}' in config.", k).as_str()).await;
  17. }
  18. }
  19. }
  20. let hostname = cfg_boot.sys.hostname.as_str();
  21. let shn_res = syscall::hostname::set_hostname(hostname);
  22. match shn_res {
  23. Ok(_) => {
  24. logger.debug(format!("set hostname to '{}'.", hostname).as_str()).await;
  25. }
  26. Err(e) => {
  27. logger.warn(format!("failed set hostname to '{}': {:?}", hostname, e).as_str()).await;
  28. }
  29. }
  30. }