Skip to content

Commit 0167893

Browse files
committed
Restores local prebuilds, previously removed in prebuild#81 / a069253
1 parent 9e62565 commit 0167893

File tree

2 files changed

+59
-38
lines changed

2 files changed

+59
-38
lines changed

download.js

Lines changed: 54 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -15,58 +15,74 @@ var mkdirp = require('mkdirp-classic')
1515

1616
function 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

util.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,16 @@ function packageOrigin (env, pkg) {
105105
}
106106
}
107107

108+
function localPrebuild (url) {
109+
return path.join('prebuilds', path.basename(url))
110+
}
111+
108112
exports.getDownloadUrl = getDownloadUrl
109113
exports.getApiUrl = getApiUrl
110114
exports.getAssetUrl = getAssetUrl
111115
exports.urlTemplate = urlTemplate
112116
exports.cachedPrebuild = cachedPrebuild
117+
exports.localPrebuild = localPrebuild
113118
exports.prebuildCache = prebuildCache
114119
exports.npmCache = npmCache
115120
exports.tempFile = tempFile

0 commit comments

Comments
 (0)