File tree 1 file changed +11
-0
lines changed 1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -218,27 +218,38 @@ impl PathCopy for ChildPath {
218
218
}
219
219
}
220
220
221
+ fn ensure_parent_dir ( path : & path:: Path ) -> io:: Result < ( ) > {
222
+ if let Some ( parent) = path. parent ( ) {
223
+ fs:: create_dir_all ( parent) ?;
224
+ }
225
+ Ok ( ( ) )
226
+ }
227
+
221
228
fn create_dir_all ( path : & path:: Path ) -> io:: Result < ( ) > {
222
229
fs:: create_dir_all ( path) ?;
223
230
Ok ( ( ) )
224
231
}
225
232
226
233
fn touch ( path : & path:: Path ) -> io:: Result < ( ) > {
234
+ ensure_parent_dir ( path) ?;
227
235
fs:: File :: create ( path) ?;
228
236
Ok ( ( ) )
229
237
}
230
238
231
239
fn write_binary ( path : & path:: Path , data : & [ u8 ] ) -> io:: Result < ( ) > {
240
+ ensure_parent_dir ( path) ?;
232
241
let mut file = fs:: File :: create ( path) ?;
233
242
file. write_all ( data) ?;
234
243
Ok ( ( ) )
235
244
}
236
245
237
246
fn write_str ( path : & path:: Path , data : & str ) -> io:: Result < ( ) > {
247
+ ensure_parent_dir ( path) ?;
238
248
write_binary ( path, data. as_bytes ( ) )
239
249
}
240
250
241
251
fn write_file ( path : & path:: Path , data : & path:: Path ) -> io:: Result < ( ) > {
252
+ ensure_parent_dir ( path) ?;
242
253
fs:: copy ( data, path) ?;
243
254
Ok ( ( ) )
244
255
}
You can’t perform that action at this time.
0 commit comments