Skip to content

Commit 1df0ce5

Browse files
committed
refactor(embedded): Decouple package name sanitization
1 parent 0af1d21 commit 1df0ce5

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/cargo/util/toml/embedded.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,20 @@ fn write(
7373
) -> CargoResult<std::path::PathBuf> {
7474
let hash = hash(script).to_string();
7575
assert_eq!(hash.len(), 64);
76+
77+
let file_name = script
78+
.path
79+
.file_stem()
80+
.ok_or_else(|| anyhow::format_err!("no file name"))?
81+
.to_string_lossy();
82+
let name = sanitize_package_name(file_name.as_ref());
83+
7684
let mut workspace_root = target_dir.to_owned();
7785
workspace_root.push("eval");
7886
workspace_root.push(&hash[0..2]);
7987
workspace_root.push(&hash[2..4]);
8088
workspace_root.push(&hash[4..]);
81-
workspace_root.push(package_name(script)?);
89+
workspace_root.push(name);
8290
std::fs::create_dir_all(&workspace_root).with_context(|| {
8391
format!(
8492
"failed to create temporary workspace at {}",
@@ -126,7 +134,12 @@ fn expand_manifest_(script: &RawScript, config: &Config) -> CargoResult<toml::Ta
126134
anyhow::bail!("`package.{key}` is not allowed in embedded manifests")
127135
}
128136
}
129-
let name = package_name(script)?;
137+
let file_name = script
138+
.path
139+
.file_stem()
140+
.ok_or_else(|| anyhow::format_err!("no file name"))?
141+
.to_string_lossy();
142+
let name = sanitize_package_name(file_name.as_ref());
130143
let hash = hash(script);
131144
let bin_name = format!("{name}_{hash}");
132145
package
@@ -179,12 +192,7 @@ fn expand_manifest_(script: &RawScript, config: &Config) -> CargoResult<toml::Ta
179192
Ok(manifest)
180193
}
181194

182-
fn package_name(script: &RawScript) -> CargoResult<String> {
183-
let name = script
184-
.path
185-
.file_stem()
186-
.ok_or_else(|| anyhow::format_err!("no file name"))?
187-
.to_string_lossy();
195+
fn sanitize_package_name(name: &str) -> String {
188196
let mut slug = String::new();
189197
for (i, c) in name.chars().enumerate() {
190198
match (i, c) {
@@ -204,7 +212,7 @@ fn package_name(script: &RawScript) -> CargoResult<String> {
204212
}
205213
}
206214
}
207-
Ok(slug)
215+
slug
208216
}
209217

210218
fn hash(script: &RawScript) -> blake3::Hash {

0 commit comments

Comments
 (0)