@@ -7,30 +7,30 @@ var os = require('os')
7
7
8
8
var win32 = os . platform ( ) === 'win32'
9
9
10
- var noop = function ( ) { }
10
+ var noop = function ( ) { }
11
11
12
- var echo = function ( name ) {
12
+ var echo = function ( name ) {
13
13
return name
14
14
}
15
15
16
- var normalize = ! win32 ? echo : function ( name ) {
16
+ var normalize = ! win32 ? echo : function ( name ) {
17
17
return name . replace ( / \\ / g, '/' ) . replace ( / : / g, '_' )
18
18
}
19
19
20
- var statAll = function ( fs , stat , cwd , ignore , entries ) {
20
+ var statAll = function ( fs , stat , cwd , ignore , entries ) {
21
21
var queue = entries || [ '.' ]
22
22
23
- return function loop ( callback ) {
23
+ return function loop ( callback ) {
24
24
if ( ! queue . length ) return callback ( )
25
25
var next = queue . shift ( )
26
26
var nextAbs = path . join ( cwd , next )
27
27
28
- stat ( nextAbs , function ( err , stat ) {
28
+ stat ( nextAbs , function ( err , stat ) {
29
29
if ( err ) return callback ( err )
30
30
31
31
if ( ! stat . isDirectory ( ) ) return callback ( null , next , stat )
32
32
33
- fs . readdir ( nextAbs , function ( err , files ) {
33
+ fs . readdir ( nextAbs , function ( err , files ) {
34
34
if ( err ) return callback ( err )
35
35
36
36
for ( var i = 0 ; i < files . length ; i ++ ) {
@@ -43,15 +43,15 @@ var statAll = function(fs, stat, cwd, ignore, entries) {
43
43
}
44
44
}
45
45
46
- var strip = function ( map , level ) {
47
- return function ( header ) {
46
+ var strip = function ( map , level ) {
47
+ return function ( header ) {
48
48
header . name = header . name . split ( '/' ) . slice ( level ) . join ( '/' )
49
49
if ( header . linkname ) header . linkname = header . linkname . split ( '/' ) . slice ( level ) . join ( '/' )
50
50
return map ( header )
51
51
}
52
52
}
53
53
54
- exports . pack = function ( cwd , opts ) {
54
+ exports . pack = function ( cwd , opts ) {
55
55
if ( ! cwd ) cwd = '.'
56
56
if ( ! opts ) opts = { }
57
57
@@ -65,15 +65,15 @@ exports.pack = function(cwd, opts) {
65
65
66
66
if ( opts . strip ) map = strip ( map , opts . strip )
67
67
68
- var onlink = function ( filename , header ) {
69
- xfs . readlink ( path . join ( cwd , filename ) , function ( err , linkname ) {
68
+ var onlink = function ( filename , header ) {
69
+ xfs . readlink ( path . join ( cwd , filename ) , function ( err , linkname ) {
70
70
if ( err ) return pack . destroy ( err )
71
71
header . linkname = normalize ( linkname )
72
72
pack . entry ( header , onnextentry )
73
73
} )
74
74
}
75
75
76
- var onstat = function ( err , filename , stat ) {
76
+ var onstat = function ( err , filename , stat ) {
77
77
if ( err ) return pack . destroy ( err )
78
78
if ( ! filename ) return pack . finalize ( )
79
79
@@ -106,7 +106,7 @@ exports.pack = function(cwd, opts) {
106
106
// TODO: add fifo etc...
107
107
108
108
if ( ! stat . isFile ( ) ) {
109
- if ( strict ) return pack . destroy ( new Error ( 'unsupported type for ' + filename ) )
109
+ if ( strict ) return pack . destroy ( new Error ( 'unsupported type for ' + filename ) )
110
110
return onnextentry ( )
111
111
}
112
112
@@ -115,14 +115,14 @@ exports.pack = function(cwd, opts) {
115
115
116
116
var rs = mapStream ( xfs . createReadStream ( path . join ( cwd , filename ) ) , header )
117
117
118
- rs . on ( 'error' , function ( err ) { // always forward errors on destroy
118
+ rs . on ( 'error' , function ( err ) { // always forward errors on destroy
119
119
entry . destroy ( err )
120
120
} )
121
121
122
122
pump ( rs , entry )
123
123
}
124
124
125
- var onnextentry = function ( err ) {
125
+ var onnextentry = function ( err ) {
126
126
if ( err ) return pack . destroy ( err )
127
127
statNext ( onstat )
128
128
}
@@ -132,19 +132,19 @@ exports.pack = function(cwd, opts) {
132
132
return pack
133
133
}
134
134
135
- var head = function ( list ) {
135
+ var head = function ( list ) {
136
136
return list . length ? list [ list . length - 1 ] : null
137
137
}
138
138
139
- var processGetuid = function ( ) {
139
+ var processGetuid = function ( ) {
140
140
return process . getuid ? process . getuid ( ) : - 1
141
141
}
142
142
143
- var processUmask = function ( ) {
143
+ var processUmask = function ( ) {
144
144
return process . umask ? process . umask ( ) : 0
145
145
}
146
146
147
- exports . extract = function ( cwd , opts ) {
147
+ exports . extract = function ( cwd , opts ) {
148
148
if ( ! cwd ) cwd = '.'
149
149
if ( ! opts ) opts = { }
150
150
@@ -172,40 +172,40 @@ exports.extract = function(cwd, opts) {
172
172
fmode |= 0222
173
173
}
174
174
175
- var utimesParent = function ( name , cb ) { // we just set the mtime on the parent dir again everytime we write an entry
175
+ var utimesParent = function ( name , cb ) { // we just set the mtime on the parent dir again everytime we write an entry
176
176
var top
177
177
while ( ( top = head ( stack ) ) && name . slice ( 0 , top [ 0 ] . length ) !== top [ 0 ] ) stack . pop ( )
178
178
if ( ! top ) return cb ( )
179
179
xfs . utimes ( top [ 0 ] , now , top [ 1 ] , cb )
180
180
}
181
181
182
- var utimes = function ( name , header , cb ) {
182
+ var utimes = function ( name , header , cb ) {
183
183
if ( opts . utimes === false ) return cb ( )
184
184
185
185
if ( header . type === 'directory' ) return xfs . utimes ( name , now , header . mtime , cb )
186
186
if ( header . type === 'symlink' ) return utimesParent ( name , cb ) // TODO: how to set mtime on link?
187
187
188
- xfs . utimes ( name , now , header . mtime , function ( err ) {
188
+ xfs . utimes ( name , now , header . mtime , function ( err ) {
189
189
if ( err ) return cb ( err )
190
190
utimesParent ( name , cb )
191
191
} )
192
192
}
193
193
194
- var chperm = function ( name , header , cb ) {
194
+ var chperm = function ( name , header , cb ) {
195
195
var link = header . type === 'symlink'
196
196
var chmod = link ? xfs . lchmod : xfs . chmod
197
197
var chown = link ? xfs . lchown : xfs . chown
198
198
199
199
if ( ! chmod ) return cb ( )
200
- chmod ( name , ( header . mode | ( header . type === 'directory' ? dmode : fmode ) ) & umask , function ( err ) {
200
+ chmod ( name , ( header . mode | ( header . type === 'directory' ? dmode : fmode ) ) & umask , function ( err ) {
201
201
if ( err ) return cb ( err )
202
202
if ( ! own ) return cb ( )
203
203
if ( ! chown ) return cb ( )
204
204
chown ( name , header . uid , header . gid , cb )
205
205
} )
206
206
}
207
207
208
- extract . on ( 'entry' , function ( header , stream , next ) {
208
+ extract . on ( 'entry' , function ( header , stream , next ) {
209
209
header = map ( header ) || header
210
210
header . name = normalize ( header . name )
211
211
var name = path . join ( cwd , path . join ( '/' , header . name ) )
@@ -215,31 +215,31 @@ exports.extract = function(cwd, opts) {
215
215
return next ( )
216
216
}
217
217
218
- var stat = function ( err ) {
218
+ var stat = function ( err ) {
219
219
if ( err ) return next ( err )
220
220
if ( win32 ) return next ( )
221
- utimes ( name , header , function ( err ) {
221
+ utimes ( name , header , function ( err ) {
222
222
if ( err ) return next ( err )
223
223
chperm ( name , header , next )
224
224
} )
225
225
}
226
226
227
- var onlink = function ( ) {
227
+ var onlink = function ( ) {
228
228
if ( win32 ) return next ( ) // skip symlinks on win for now before it can be tested
229
- xfs . unlink ( name , function ( ) {
229
+ xfs . unlink ( name , function ( ) {
230
230
xfs . symlink ( header . linkname , name , stat )
231
231
} )
232
232
}
233
233
234
- var onfile = function ( ) {
234
+ var onfile = function ( ) {
235
235
var ws = xfs . createWriteStream ( name )
236
236
var rs = mapStream ( stream , header )
237
237
238
- ws . on ( 'error' , function ( err ) { // always forward errors on destroy
238
+ ws . on ( 'error' , function ( err ) { // always forward errors on destroy
239
239
rs . destroy ( err )
240
240
} )
241
241
242
- pump ( rs , ws , function ( err ) {
242
+ pump ( rs , ws , function ( err ) {
243
243
if ( err ) return next ( err )
244
244
ws . on ( 'close' , stat )
245
245
} )
@@ -250,12 +250,12 @@ exports.extract = function(cwd, opts) {
250
250
return mkdirp ( name , { fs :xfs } , stat )
251
251
}
252
252
253
- mkdirp ( path . dirname ( name ) , { fs :xfs } , function ( err ) {
253
+ mkdirp ( path . dirname ( name ) , { fs :xfs } , function ( err ) {
254
254
if ( err ) return next ( err )
255
255
if ( header . type === 'symlink' ) return onlink ( )
256
256
257
257
if ( header . type !== 'file' ) {
258
- if ( strict ) return next ( new Error ( 'unsupported type for ' + name + ' (' + header . type + ')' ) )
258
+ if ( strict ) return next ( new Error ( 'unsupported type for ' + name + ' (' + header . type + ')' ) )
259
259
stream . resume ( )
260
260
return next ( )
261
261
}
0 commit comments