mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
Promisifying download_node_binaries
This commit is contained in:
parent
d4663f0bb4
commit
63d6a143a6
2 changed files with 31 additions and 33 deletions
|
@ -53,7 +53,6 @@
|
|||
"serve-favicon": "~2.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"async": "^0.9.0",
|
||||
"bluebird": "~2.0.7",
|
||||
"connect": "~2.19.5",
|
||||
"event-stream": "~3.1.5",
|
||||
|
|
|
@ -7,11 +7,10 @@ var fs = require('fs');
|
|||
var join = require('path').join;
|
||||
var filesPatern = _.template('node-v<%- version %>-<%- platform %>.tar.gz');
|
||||
var urlPattern = _.template('http://nodejs.org/dist/v<%- version %>/<%- file %>');
|
||||
var async = require('async');
|
||||
var Promise = require('bluebird');
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.registerTask('download_node_binaries', 'Download the node.js binaries', function () {
|
||||
var done = this.async();
|
||||
var platforms = _.without(grunt.config.get('platforms'), 'windows');
|
||||
var rootPath = grunt.config.get('root');
|
||||
var version = grunt.config.get('nodeVersion');
|
||||
|
@ -23,44 +22,44 @@ module.exports = function (grunt) {
|
|||
};
|
||||
|
||||
var downloadWindows = function (cb) {
|
||||
var dest = join(rootPath, '.node_binaries', 'windows');
|
||||
fs.stat(dest, function (err) {
|
||||
if (!err) return cb(); // skip downloading if we already have them
|
||||
var url = urlPattern({ version: version, file: 'node.exe'});
|
||||
mkdirp(dest, function (err) {
|
||||
if (err) return cb(err);
|
||||
var out = fs.createWriteStream(join(dest, 'node.exe'));
|
||||
out.on('close', cb).on('error', cb);
|
||||
var req = request.get(url);
|
||||
req.on('response', handle404);
|
||||
req.pipe(out);
|
||||
return new Promise(function (resolve, reject) {
|
||||
var dest = join(rootPath, '.node_binaries', 'windows');
|
||||
fs.stat(dest, function (err) {
|
||||
if (!err) return resolve(); // skip downloading if we already have them
|
||||
var url = urlPattern({ version: version, file: 'node.exe'});
|
||||
mkdirp(dest, function (err) {
|
||||
if (err) return reject(err);
|
||||
var out = fs.createWriteStream(join(dest, 'node.exe'));
|
||||
out.on('close', resolve).on('error', reject);
|
||||
var req = request.get(url);
|
||||
req.on('response', handle404);
|
||||
req.pipe(out);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var download = function (platform, cb) {
|
||||
var dest = join(rootPath, '.node_binaries', platform);
|
||||
fs.stat(dest, function (err) {
|
||||
if (!err) return cb(); // skip downloading if we already have them
|
||||
var file = filesPatern({ version: version, platform: platform });
|
||||
var url = urlPattern({ version: version, file: file });
|
||||
mkdirp(dest, function (err) {
|
||||
if (err) return cb(err);
|
||||
var unzip = zlib.createGunzip();
|
||||
var out = tar.Extract({ path: dest, strip: 1 });
|
||||
out.on('close', cb).on('error', cb);
|
||||
var req = request.get(url);
|
||||
req.on('response', handle404);
|
||||
req.pipe(unzip).pipe(out);
|
||||
var download = function (platform) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var dest = join(rootPath, '.node_binaries', platform);
|
||||
fs.stat(dest, function (err) {
|
||||
if (!err) return resolve(); // skip downloading if we already have them
|
||||
var file = filesPatern({ version: version, platform: platform });
|
||||
var url = urlPattern({ version: version, file: file });
|
||||
mkdirp(dest, function (err) {
|
||||
if (err) return reject(err);
|
||||
var unzip = zlib.createGunzip();
|
||||
var out = tar.Extract({ path: dest, strip: 1 });
|
||||
out.on('close', resolve).on('error', reject);
|
||||
var req = request.get(url);
|
||||
req.on('response', handle404);
|
||||
req.pipe(unzip).pipe(out);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
async.each(platforms, download, function (err) {
|
||||
if (err) return done(err);
|
||||
downloadWindows(done);
|
||||
});
|
||||
|
||||
return Promise.map(platforms, download).then(downloadWindows).nodeify(this.async());
|
||||
});
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue