1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/*
* mongo-edu
*
* Copyright (c) 2014-2015 Przemyslaw Pluta
* Licensed under the MIT license.
* https://github.com/przemyslawpluta/mongo-edu/blob/master/LICENSE
*/
var mdbvideos = require('./login'),
videoHandler = require('./videos'),
prompts = require('./prompts'),
colors = require('colors'),
inquirer = require('inquirer');
module.exports = function run(profile, argv) {
'use strict';
var lookFor = ((!argv.h)? 'Videos' : 'Handouts');
inquirer.prompt(profile, function prompt(answers) {
var list = prompts.list, classes = list, check = prompts.check;
mdbvideos.init(answers, argv, function get(err, data) {
if (err !== null) { throw err; }
if (data.length) {
classes[0].message = 'Found ' + data.length + ' Course'+ ((data.length > 1)? 's' : '') + '. Select:';
classes[0].choices = data;
return currentList();
}
});
function currentList() {
inquirer.prompt(classes, function prompt(answers) {
mdbvideos.getList(answers, argv, function get(err, data, pass) {
if (err !== null) { throw err; }
if (data.length) {
if (pass) { return showDetails(err, data); }
list[0].message = 'Found ' + data.length + ' List' + ((data.length > 1)? 's' : '') + '. Select:';
list[0].choices = data;
return currentVideos();
} else {
if (pass) { return console.log('i'.red + ' Looks like the course is not yet available or has already ended. ' +
lookFor + ' list is not available.\n\nCheck the start/end date for selected course.\n'); }
}
return console.log('i'.red + ' Unable to locate any ' + lookFor.toLowerCase() + ' lists in the wiki. Are ' +
lookFor.toLowerCase() + ' list present in the wiki?' +
((lookFor === 'Videos') ? '\n\nTry to add ' + '--cw'.green + ' to switch and search on courseware instead; make sure your mongodb user profile video preferences are set to youtube.\n' : ''));
});
});
}
function currentVideos() {
inquirer.prompt(list, function prompt(answers) {
mdbvideos.listVideos(answers, argv, function get(err, data, pass) {
if (err !== null) { throw err; }
if (!pass) { return videoHandler.details(data, argv, showDetails); }
showDetails(err, data);
});
});
}
function showDetails(err, data) {
if (err !== null) { throw err; }
if (data.length) {
check[0].message = 'Select From ' + (data.length - 2) + ' ' + lookFor + '. Download:';
check[0].choices = data;
return inquirer.prompt(check, function prompt(answers) {
videoHandler.download(answers, data, argv);
});
}
console.log('i'.red + ' Could not locate any ' + lookFor.toLowerCase() + '.'); process.exit(0);
}
});
};
|