build.rs 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. use std::env;
  2. use std::error::Error;
  3. use std::path::Path;
  4. use std::process::Command;
  5. fn main() -> Result<(), Box<dyn Error>> {
  6. let out_dir = env::var("CARGO_TARGET_DIR").unwrap();
  7. let db_file = format!("{out_dir}/dim_dev.db");
  8. println!("cargo:rustc-env=DATABASE_URL=sqlite://{db_file}");
  9. let git_tag_output = Command::new("git").args(&["describe", "--abbrev=0"]).output().unwrap();
  10. let git_tag = String::from_utf8(git_tag_output.stdout).unwrap();
  11. println!("cargo:rustc-env=GIT_TAG={}", git_tag);
  12. let git_sha_256_output = Command::new("git").args(&["rev-parse", "HEAD"]).output().unwrap();
  13. let git_sha_256 = String::from_utf8(git_sha_256_output.stdout).unwrap();
  14. println!("cargo:rustc-env=GIT_SHA_256={}", git_sha_256);
  15. if Path::new("../ui/build").exists() {
  16. println!("cargo:rustc-cfg=feature=\"embed_ui\"");
  17. } else {
  18. println!("cargo:warning=`ui/build` does not exist.");
  19. println!("cargo:warning=If you wish to embed the webui, run `yarn build` in `ui`.");
  20. }
  21. println!("cargo:rerun-if-changed=ui/build");
  22. println!("cargo:rerun-if-changed=build.rs");
  23. Ok(())
  24. }