utils.rs 529 B

1234567891011121314151617
  1. use lazy_static::lazy_static;
  2. use serde_json::Value;
  3. use std::process::Command;
  4. lazy_static! {
  5. pub static ref WORKSPACE_ROOT: String = workspace_root();
  6. }
  7. fn workspace_root() -> String {
  8. let output = Command::new("cargo").arg("metadata").output().unwrap();
  9. if !output.status.success() {
  10. panic!("unable to run cargo metadata")
  11. }
  12. let stdout = String::from_utf8(output.stdout).unwrap();
  13. let v: Value = serde_json::from_str(&stdout).unwrap();
  14. v["workspace_root"].as_str().unwrap().to_string()
  15. }