diff --git a/tools/codegen/src/lib.rs b/tools/codegen/src/lib.rs index a47924d4..4211e679 100644 --- a/tools/codegen/src/lib.rs +++ b/tools/codegen/src/lib.rs @@ -2,14 +2,11 @@ #![allow(clippy::missing_panics_doc, clippy::too_long_first_doc_paragraph)] -use std::{env, path::PathBuf}; +use std::{env, path::Path}; pub use install_action_manifest_schema::*; #[must_use] -pub fn workspace_root() -> PathBuf { - let mut dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - dir.pop(); // codegen - dir.pop(); // tools - dir +pub fn workspace_root() -> &'static Path { + Path::new(env!("CARGO_MANIFEST_DIR").strip_suffix("tools/codegen").unwrap()) } diff --git a/tools/codegen/src/main.rs b/tools/codegen/src/main.rs index b7cc38d5..1c91931f 100644 --- a/tools/codegen/src/main.rs +++ b/tools/codegen/src/main.rs @@ -32,7 +32,7 @@ fn main() -> Result<()> { let version_req_given = version_req.is_some(); let skip_existing_manifest_versions = std::env::var("SKIP_EXISTING_MANIFEST_VERSIONS").is_ok(); - let workspace_root = &workspace_root(); + let workspace_root = workspace_root(); let manifest_path = &workspace_root.join("manifests").join(format!("{package}.json")); let download_cache_dir = &workspace_root.join("tools/codegen/tmp/cache").join(package); fs::create_dir_all(manifest_path.parent().unwrap())?; diff --git a/tools/codegen/src/tools-markdown.rs b/tools/codegen/src/tools-markdown.rs index 59fec6a9..53a5fe1d 100644 --- a/tools/codegen/src/tools-markdown.rs +++ b/tools/codegen/src/tools-markdown.rs @@ -40,9 +40,9 @@ fn main() -> Result<()> { let workspace_root = workspace_root(); - let mut manifest_dir = workspace_root.clone(); + let mut manifest_dir = workspace_root.to_owned(); manifest_dir.push("manifests"); - let mut base_info_dir = workspace_root.clone(); + let mut base_info_dir = workspace_root.to_owned(); base_info_dir.push("tools"); base_info_dir.push("codegen"); base_info_dir.push("base"); @@ -112,7 +112,7 @@ fn main() -> Result<()> { tools.sort_by(|x, y| x.name.cmp(&y.name)); - let mut markdown_file = workspace_root.clone(); + let mut markdown_file = workspace_root.to_owned(); markdown_file.push("TOOLS.md"); let mut file = BufWriter::new(fs::File::create(markdown_file).unwrap()); // Buffered because it is written many times.