@@ -15,58 +15,74 @@ var mkdirp = require('mkdirp-classic')
1515
1616function downloadPrebuild ( downloadUrl , opts , cb ) {
1717 var cachedPrebuild = util . cachedPrebuild ( downloadUrl )
18+ var localPrebuild = util . localPrebuild ( downloadUrl )
1819 var tempFile = util . tempFile ( cachedPrebuild )
1920 var log = opts . log || noop
2021
21- ensureNpmCacheDir ( function ( err ) {
22- if ( err ) return onerror ( err )
22+ if ( opts . nolocal ) return download ( )
2323
24- log . info ( 'looking for cached prebuild @' , cachedPrebuild )
25- fs . access ( cachedPrebuild , fs . R_OK | fs . W_OK , function ( err ) {
26- if ( ! ( err && err . code === 'ENOENT' ) ) {
27- log . info ( 'found cached prebuild' )
28- return unpack ( )
29- }
24+ log . info ( 'looking for local prebuild @' , localPrebuild )
25+ fs . access ( localPrebuild , fs . R_OK | fs . W_OK , function ( err ) {
26+ if ( err && err . code === 'ENOENT' ) {
27+ return download ( )
28+ }
3029
31- log . http ( 'request' , 'GET ' + downloadUrl )
32- var reqOpts = proxy ( { url : downloadUrl } , opts )
30+ log . info ( 'found local prebuild' )
31+ cachedPrebuild = localPrebuild
32+ unpack ( )
33+ } )
3334
34- if ( opts . token ) {
35- reqOpts . url += '?access_token=' + opts . token
36- reqOpts . headers = {
37- 'User-Agent' : 'simple-get' ,
38- Accept : 'application/octet-stream'
35+ function download ( ) {
36+ ensureNpmCacheDir ( function ( err ) {
37+ if ( err ) return onerror ( err )
38+
39+ log . info ( 'looking for cached prebuild @' , cachedPrebuild )
40+ fs . access ( cachedPrebuild , fs . R_OK | fs . W_OK , function ( err ) {
41+ if ( ! ( err && err . code === 'ENOENT' ) ) {
42+ log . info ( 'found cached prebuild' )
43+ return unpack ( )
3944 }
40- }
4145
42- var req = get ( reqOpts , function ( err , res ) {
43- if ( err ) return onerror ( err )
44- log . http ( res . statusCode , downloadUrl )
45- if ( res . statusCode !== 200 ) return onerror ( )
46- mkdirp ( util . prebuildCache ( ) , function ( ) {
47- log . info ( 'downloading to @' , tempFile )
48- pump ( res , fs . createWriteStream ( tempFile ) , function ( err ) {
49- if ( err ) return onerror ( err )
50- fs . rename ( tempFile , cachedPrebuild , function ( err ) {
51- if ( err ) return cb ( err )
52- log . info ( 'renaming to @' , cachedPrebuild )
53- unpack ( )
46+ log . http ( 'request' , 'GET ' + downloadUrl )
47+ var reqOpts = proxy ( { url : downloadUrl } , opts )
48+
49+ if ( opts . token ) {
50+ reqOpts . url += '?access_token=' + opts . token
51+ reqOpts . headers = {
52+ 'User-Agent' : 'simple-get' ,
53+ Accept : 'application/octet-stream'
54+ }
55+ }
56+
57+ var req = get ( reqOpts , function ( err , res ) {
58+ if ( err ) return onerror ( err )
59+ log . http ( res . statusCode , downloadUrl )
60+ if ( res . statusCode !== 200 ) return onerror ( )
61+ mkdirp ( util . prebuildCache ( ) , function ( ) {
62+ log . info ( 'downloading to @' , tempFile )
63+ pump ( res , fs . createWriteStream ( tempFile ) , function ( err ) {
64+ if ( err ) return onerror ( err )
65+ fs . rename ( tempFile , cachedPrebuild , function ( err ) {
66+ if ( err ) return cb ( err )
67+ log . info ( 'renaming to @' , cachedPrebuild )
68+ unpack ( )
69+ } )
5470 } )
5571 } )
5672 } )
57- } )
5873
59- req . setTimeout ( 30 * 1000 , function ( ) {
60- req . abort ( )
74+ req . setTimeout ( 30 * 1000 , function ( ) {
75+ req . abort ( )
76+ } )
6177 } )
62- } )
6378
64- function onerror ( err ) {
65- fs . unlink ( tempFile , function ( ) {
66- cb ( err || error . noPrebuilts ( opts ) )
67- } )
68- }
69- } )
79+ function onerror ( err ) {
80+ fs . unlink ( tempFile , function ( ) {
81+ cb ( err || error . noPrebuilts ( opts ) )
82+ } )
83+ }
84+ } )
85+ }
7086
7187 function unpack ( ) {
7288 var binaryName
0 commit comments