mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Merge pull request #4717 from BigFunger/plugin-file-input
Added file protocol support to plugin installer
This commit is contained in:
commit
10b7e0bfb1
3 changed files with 18 additions and 11 deletions
|
@ -1,6 +1,8 @@
|
|||
var _ = require('lodash');
|
||||
var zlib = require('zlib');
|
||||
var Promise = require('bluebird');
|
||||
var url = require('url');
|
||||
var fs = require('fs');
|
||||
var request = require('request');
|
||||
var tar = require('tar');
|
||||
var progressReporter = require('./progressReporter');
|
||||
|
@ -17,7 +19,7 @@ module.exports = function (settings, logger) {
|
|||
throw new Error('Not a valid url.');
|
||||
}
|
||||
|
||||
logger.log('attempting to download ' + sourceUrl);
|
||||
logger.log('Attempting to extract from ' + sourceUrl);
|
||||
|
||||
return Promise.try(function () {
|
||||
return downloadSingle(sourceUrl, settings.workingPath, settings.timeout, logger)
|
||||
|
@ -26,7 +28,7 @@ module.exports = function (settings, logger) {
|
|||
return tryNext();
|
||||
}
|
||||
if (err.message === 'EEXTRACT') {
|
||||
throw (new Error('Error extracting the plugin archive'));
|
||||
throw (new Error('Error extracting the plugin archive... is this a valid tar.gz file?'));
|
||||
}
|
||||
throw (err);
|
||||
});
|
||||
|
@ -54,10 +56,10 @@ module.exports = function (settings, logger) {
|
|||
}
|
||||
|
||||
return wrappedRequest(requestOptions)
|
||||
.then(function (req) {
|
||||
var reporter = progressReporter(logger, req);
|
||||
.then(function (fileStream) {
|
||||
var reporter = progressReporter(logger, fileStream);
|
||||
|
||||
req
|
||||
fileStream
|
||||
.on('response', reporter.handleResponse)
|
||||
.on('data', reporter.handleData)
|
||||
.on('error', _.partial(reporter.handleError, 'ENOTFOUND'))
|
||||
|
@ -73,7 +75,12 @@ module.exports = function (settings, logger) {
|
|||
|
||||
function wrappedRequest(requestOptions) {
|
||||
return Promise.try(function () {
|
||||
return request.get(requestOptions);
|
||||
let urlInfo = url.parse(requestOptions.url);
|
||||
if (/^file/.test(urlInfo.protocol)) {
|
||||
return fs.createReadStream(urlInfo.path);
|
||||
} else {
|
||||
return request.get(requestOptions);
|
||||
}
|
||||
})
|
||||
.catch(function (err) {
|
||||
if (err.message.match(/invalid uri/i)) {
|
||||
|
|
|
@ -7,7 +7,7 @@ module.exports = {
|
|||
};
|
||||
|
||||
function install(settings, logger) {
|
||||
logger.log(`installing ${settings.package}`);
|
||||
logger.log(`Installing ${settings.package}`);
|
||||
|
||||
try {
|
||||
fs.statSync(settings.pluginPath);
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
var Promise = require('bluebird');
|
||||
|
||||
/*
|
||||
Responsible for reporting the progress of the file request stream
|
||||
Responsible for reporting the progress of the file stream
|
||||
*/
|
||||
module.exports = function (logger, request) {
|
||||
module.exports = function (logger, stream) {
|
||||
var oldDotCount = 0;
|
||||
var runningTotal = 0;
|
||||
var totalSize = 0;
|
||||
|
@ -22,7 +22,7 @@ module.exports = function (logger, request) {
|
|||
|
||||
if (err) logger.error(err);
|
||||
hasError = true;
|
||||
request.abort();
|
||||
if (stream.abort) stream.abort();
|
||||
_reject(new Error(errorMessage));
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ module.exports = function (logger, request) {
|
|||
function handleEnd() {
|
||||
if (hasError) return;
|
||||
|
||||
logger.log('Download Complete');
|
||||
logger.log('Extraction complete');
|
||||
_resolve();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue