@@ -9,6 +9,16 @@ const type = 'micropython';
9
9
10
10
// REQUIRES INTEGRATION TEST
11
11
/* c8 ignore start */
12
+ const mkdir = ( FS , path ) => {
13
+ try {
14
+ FS . mkdir ( path ) ;
15
+ }
16
+ // eslint-disable-next-line no-unused-vars
17
+ catch ( _ ) {
18
+ // ignore as there's no path.exists here
19
+ }
20
+ } ;
21
+
12
22
export default {
13
23
type,
14
24
module : ( version = '1.22.0-272' ) =>
@@ -53,12 +63,12 @@ export default {
53
63
const zipReader = new ZipReader ( zipFileReader ) ;
54
64
for ( const entry of await zipReader . getEntries ( ) ) {
55
65
const { directory, filename } = entry ;
56
- if ( directory ) {
57
- FS . mkdir ( extractDir + filename ) ;
58
- }
66
+ const name = extractDir + filename ;
67
+ if ( directory ) mkdir ( FS , name ) ;
59
68
else {
69
+ mkdir ( FS , PATH . dirname ( name ) ) ;
60
70
const buffer = await entry . getData ( new Uint8ArrayWriter ) ;
61
- FS . writeFile ( extractDir + filename , buffer , {
71
+ FS . writeFile ( name , buffer , {
62
72
canOwn : true ,
63
73
} ) ;
64
74
}
@@ -73,11 +83,14 @@ export default {
73
83
import os, gzip, tarfile
74
84
tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open("${ TMP } ", "rb")))
75
85
for f in tar:
76
- name = f"${ extractDir } {f.name[2:] }"
86
+ name = f"${ extractDir } {f.name}"
77
87
if f.type == tarfile.DIRTYPE:
78
88
if f.name != "./":
79
89
os.mkdir(name.strip("/"))
80
90
else:
91
+ dir = os.path.dirname(name)
92
+ if not os.path.exists(dir):
93
+ os.mkdir(dir)
81
94
source = tar.extractfile(f)
82
95
with open(name, "wb") as dest:
83
96
dest.write(source.read())
0 commit comments