Skip to content
This repository was archived by the owner on Dec 20, 2023. It is now read-only.

Commit fb9f25d

Browse files
committed
Merge pull request #78 from flovilmart/nugget-downloader
Uses nugget to download versions
2 parents 7366bed + 64b3dd7 commit fb9f25d

File tree

2 files changed

+15
-56
lines changed

2 files changed

+15
-56
lines changed

lib/download.js

Lines changed: 14 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,35 @@
11
var async = require('async');
22
var chalk = require('chalk');
33
var fs = require('fs-extra');
4-
var request = require('request');
54
var tildify = require('tildify');
6-
var ProgressBar = require('progress');
75
var figures = require('figures');
8-
var format = require('util').format;
96
var debug = require('debug')('mongodb-version-manager:download');
10-
11-
function progressbar(pkg, res, totalSize) {
12-
var bar = new ProgressBar(' Downloading MongoDB v'
13-
+ pkg.version + ' [:bar] :percent :etasec', {
14-
complete: '=',
15-
incomplete: ' ',
16-
width: 40,
17-
total: totalSize
18-
});
19-
20-
res.on('data', function(chunk) {
21-
bar.tick(chunk.length);
22-
});
23-
}
7+
var nugget = require('nugget');
248

259
function download(model, done) {
2610
debug('downloading artifact from `%s` to `%s`...',
2711
model.url, tildify(model.download_path));
2812

29-
var out = fs.createWriteStream(model.download_path);
30-
var onFinish;
31-
var onError = function(err) {
32-
out.removeListener('finish', onFinish);
33-
debug('removing incomplete artifact from `%s`',
34-
model.download_path);
35-
fs.unlink(model.download_path, function() {
36-
done(err);
37-
});
38-
};
39-
40-
onFinish = function() {
41-
/* eslint no-console:0 */
42-
out.removeListener('error', onError);
13+
var quiet = process.env.silent;
14+
var verbose = process.env.VERBOSE;
15+
var nuggetOpts = {target: model.filename, dir: model.download_directory, resume: true, verbose: verbose, quiet: quiet};
16+
nugget(model.url, nuggetOpts, function(errors) {
17+
if (errors) {
18+
var error = errors[0]; // nugget returns an array of errors but we only need 1st because we only have 1 url
19+
debug('removing incomplete artifact from `%s`',
20+
model.download_path);
21+
fs.unlink(model.download_path, function() {
22+
done(error);
23+
});
24+
return;
25+
}
4326
debug('successfully downloaded MongoDB version v%s to %s',
4427
model.version, model.download_path);
4528
if (!process.env.silent) {
4629
console.log(chalk.bold.green(figures.tick),
4730
' Downloaded MongoDB', model.version);
4831
}
4932
done();
50-
};
51-
out.once('error', onError).once('finish', onFinish);
52-
53-
var req = request(model.url);
54-
req.on('response', function(res) {
55-
var totalSize = parseInt(res.headers['content-length'], 10);
56-
debug('total size %dMB', (totalSize / 1024 / 1024).toFixed(2));
57-
58-
if (!totalSize || totalSize < 10 * 1024 * 1024) {
59-
var msg = format('Download looks too small! %s is only %s bytes!',
60-
model.url, totalSize);
61-
return onError(new Error(msg));
62-
}
63-
64-
if (process.env.silent) {
65-
debug('Downloading `%s`...', model.url);
66-
} else if (!process.env.CI) {
67-
progressbar(model, res, totalSize);
68-
} else {
69-
console.log('Downloading `%s`...', model.url);
70-
}
71-
});
72-
req.pipe(out);
73-
req.on('error', function(err) {
74-
onError(err);
7533
});
7634
}
7735

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"lodash.difference": "^4.1.1",
5151
"mongodb-download-url": "^0.1.9",
5252
"mongodb-version-list": "0.0.3",
53+
"nugget": "^2.0.0",
5354
"progress": "~1.1.8",
5455
"request": "~2.69.0",
5556
"semver": "~5.1.0",

0 commit comments

Comments
 (0)