codegen: Avoid allocation in workspace_root()

This commit is contained in:
Taiki Endo
2026-03-09 00:29:35 +09:00
parent 93ea0b33c3
commit 5ccf6295e6
3 changed files with 7 additions and 10 deletions

View File

@@ -2,14 +2,11 @@
#![allow(clippy::missing_panics_doc, clippy::too_long_first_doc_paragraph)] #![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::*; pub use install_action_manifest_schema::*;
#[must_use] #[must_use]
pub fn workspace_root() -> PathBuf { pub fn workspace_root() -> &'static Path {
let mut dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); Path::new(env!("CARGO_MANIFEST_DIR").strip_suffix("tools/codegen").unwrap())
dir.pop(); // codegen
dir.pop(); // tools
dir
} }

View File

@@ -32,7 +32,7 @@ fn main() -> Result<()> {
let version_req_given = version_req.is_some(); let version_req_given = version_req.is_some();
let skip_existing_manifest_versions = std::env::var("SKIP_EXISTING_MANIFEST_VERSIONS").is_ok(); 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 manifest_path = &workspace_root.join("manifests").join(format!("{package}.json"));
let download_cache_dir = &workspace_root.join("tools/codegen/tmp/cache").join(package); let download_cache_dir = &workspace_root.join("tools/codegen/tmp/cache").join(package);
fs::create_dir_all(manifest_path.parent().unwrap())?; fs::create_dir_all(manifest_path.parent().unwrap())?;

View File

@@ -40,9 +40,9 @@ fn main() -> Result<()> {
let workspace_root = workspace_root(); let workspace_root = workspace_root();
let mut manifest_dir = workspace_root.clone(); let mut manifest_dir = workspace_root.to_owned();
manifest_dir.push("manifests"); 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("tools");
base_info_dir.push("codegen"); base_info_dir.push("codegen");
base_info_dir.push("base"); base_info_dir.push("base");
@@ -112,7 +112,7 @@ fn main() -> Result<()> {
tools.sort_by(|x, y| x.name.cmp(&y.name)); 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"); markdown_file.push("TOOLS.md");
let mut file = BufWriter::new(fs::File::create(markdown_file).unwrap()); // Buffered because it is written many times. let mut file = BufWriter::new(fs::File::create(markdown_file).unwrap()); // Buffered because it is written many times.