UNPKG

1.63 kBJavaScriptView Raw
1var async = require('async');
2var chalk = require('chalk');
3var fs = require('fs-extra');
4var tildify = require('tildify');
5var figures = require('figures');
6var dl = require('download');
7var debug = require('debug')('mongodb-version-manager:download');
8
9function download(model, done) {
10 debug('downloading artifact from `%s` to `%s`...',
11 model.url, tildify(model.directory));
12
13 var quiet = process.env.silent;
14 var options = {
15 extract: true,
16 strip: 1,
17 retries: 3
18 // filename: model.filename,
19 // output: model.directory
20
21 };
22 debug(model.url, model.root_directory, options);
23 dl(model.url, model.root_directory, options).then(function() {
24 debug('successfully downloaded MongoDB version v%s to %s',
25 model.version, model.root_directory);
26 if (!quiet) {
27 console.log(chalk.bold.green(figures.tick),
28 ' Downloaded MongoDB', model.version);
29 }
30 done();
31 })
32 .catch(function(err) {
33 debug('error downloading!', err);
34 console.error(err);
35 done(err);
36
37 // debug('removing incomplete artifact from `%s`',
38 // model.root_directory);
39 //
40 // fs.unlink(model.root_directory, function() {
41 // done(err);
42 // });
43 });
44}
45
46module.exports = function(model, done) {
47 debug('downloading', model.serialize({
48 props: true,
49 derived: true
50 }));
51 async.series([
52 fs.exists.bind(null, model.bin_directory),
53 download.bind(null, model)
54 ], function(err) {
55 if (err === true) {
56 debug('already have artifact at `%s`', model.bin_directory);
57 return done();
58 }
59 if (err) {
60 return done(err);
61 }
62 done();
63 });
64};