File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ 'use strict'
2+
3+ const BB = require ( 'bluebird' )
4+
5+ const getStream = require ( 'get-stream' )
6+ const pipeline = require ( 'mississippi' ) . pipeline
7+ const tar = require ( 'tar-stream' )
8+ const zlib = require ( 'zlib' )
9+
10+ module . exports = makeTarball
11+ function makeTarball ( files , opts ) {
12+ opts = opts || { }
13+ const pack = tar . pack ( )
14+ Object . keys ( files ) . forEach ( function ( filename ) {
15+ const entry = files [ filename ]
16+ pack . entry ( {
17+ name : ( opts . noPrefix ? '' : 'package/' ) + filename ,
18+ type : entry . type ,
19+ size : entry . size ,
20+ mode : entry . mode ,
21+ mtime : entry . mtime || new Date ( 0 ) ,
22+ linkname : entry . linkname ,
23+ uid : entry . uid ,
24+ gid : entry . gid ,
25+ uname : entry . uname ,
26+ gname : entry . gname
27+ } , typeof files [ filename ] === 'string'
28+ ? files [ filename ]
29+ : files [ filename ] . data )
30+ } )
31+ pack . finalize ( )
32+ return BB . try ( ( ) => {
33+ if ( opts . stream && opts . gzip ) {
34+ return pipeline ( pack , zlib . createGzip ( ) )
35+ } else if ( opts . stream ) {
36+ return pack
37+ } else {
38+ return getStream . buffer ( pack ) . then ( ret => {
39+ if ( opts . gzip ) {
40+ return BB . fromNode ( cb => zlib . gzip ( ret , cb ) )
41+ } else {
42+ return ret
43+ }
44+ } )
45+ }
46+ } )
47+ }
You can’t perform that action at this time.
0 commit comments