summaryrefslogtreecommitdiff
path: root/lib/initialize.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/initialize.js')
-rw-r--r--lib/initialize.js103
1 files changed, 103 insertions, 0 deletions
diff --git a/lib/initialize.js b/lib/initialize.js
new file mode 100644
index 0000000..cbb2d99
--- /dev/null
+++ b/lib/initialize.js
@@ -0,0 +1,103 @@
+/*
+ * mongo-edu
+ *
+ * Copyright (c) 2014 Przemyslaw Pluta
+ * Licensed under the MIT license.
+ * https://github.com/przemyslawpluta/mongo-edu/blob/master/LICENSE
+ */
+
+var mdbvideos = require('./login'),
+ videoHandler = require('./videos'),
+ 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 = [{ type: 'list', name: 'url', message: '', choices: [] }], classes = list,
+
+ check = [{ type: 'checkbox', message: '', name: 'videos', choices: [],
+ validate: function validate(answer) {
+ if ( answer.length < 1 ) { return 'You must choose at least one option.'; }
+ return true;
+ }
+ }];
+
+ 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') ? ' Try to add ' + '--cw'.green + ' to switch and search on courseware instead.' : ''));
+ });
+
+ });
+ }
+
+ 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);
+ }
+
+ });
+
+};