@@ -73,12 +73,20 @@ fn write(
73
73
) -> CargoResult < std:: path:: PathBuf > {
74
74
let hash = hash ( script) . to_string ( ) ;
75
75
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
+
76
84
let mut workspace_root = target_dir. to_owned ( ) ;
77
85
workspace_root. push ( "eval" ) ;
78
86
workspace_root. push ( & hash[ 0 ..2 ] ) ;
79
87
workspace_root. push ( & hash[ 2 ..4 ] ) ;
80
88
workspace_root. push ( & hash[ 4 ..] ) ;
81
- workspace_root. push ( package_name ( script ) ? ) ;
89
+ workspace_root. push ( name ) ;
82
90
std:: fs:: create_dir_all ( & workspace_root) . with_context ( || {
83
91
format ! (
84
92
"failed to create temporary workspace at {}" ,
@@ -126,7 +134,12 @@ fn expand_manifest_(script: &RawScript, config: &Config) -> CargoResult<toml::Ta
126
134
anyhow:: bail!( "`package.{key}` is not allowed in embedded manifests" )
127
135
}
128
136
}
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 ( ) ) ;
130
143
let hash = hash ( script) ;
131
144
let bin_name = format ! ( "{name}_{hash}" ) ;
132
145
package
@@ -179,12 +192,7 @@ fn expand_manifest_(script: &RawScript, config: &Config) -> CargoResult<toml::Ta
179
192
Ok ( manifest)
180
193
}
181
194
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 {
188
196
let mut slug = String :: new ( ) ;
189
197
for ( i, c) in name. chars ( ) . enumerate ( ) {
190
198
match ( i, c) {
@@ -204,7 +212,7 @@ fn package_name(script: &RawScript) -> CargoResult<String> {
204
212
}
205
213
}
206
214
}
207
- Ok ( slug)
215
+ slug
208
216
}
209
217
210
218
fn hash ( script : & RawScript ) -> blake3:: Hash {
0 commit comments