work in progress
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -7,3 +7,5 @@ docs/
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ts/*.js
 | 
					ts/*.js
 | 
				
			||||||
ts/*.js.map
 | 
					ts/*.js.map
 | 
				
			||||||
 | 
					ts/typings/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					var plugins = require("./smartcli.plugins");
 | 
				
			||||||
 | 
					var SmartcliChecks = require("./smartcli.checks");
 | 
				
			||||||
 | 
					var SmartcliGetters = require("./smartcli.getters");
 | 
				
			||||||
 | 
					var SmartcliInteractions = require("./smartcli.interaction");
 | 
				
			||||||
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 | 
					 * ---------- plugins for direct use -------------- *
 | 
				
			||||||
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
 | 
					exports.inquirer = plugins.inquirer; //inquirer is for asking questions
 | 
				
			||||||
 | 
					exports.cliff = plugins.cliff; // formats cli output
 | 
				
			||||||
 | 
					exports.argv = plugins.argv; //argv gets initial cli commands and options.
 | 
				
			||||||
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 | 
					 * ---------- checks ------------------------------ *
 | 
				
			||||||
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
 | 
					exports.check = SmartcliChecks;
 | 
				
			||||||
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 | 
					 * ---------- getters ----------------------------- *
 | 
				
			||||||
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
 | 
					exports.get = SmartcliGetters;
 | 
				
			||||||
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 | 
					 * ---------- interaction ----------------------------- *
 | 
				
			||||||
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
 | 
					exports.interaction = SmartcliInteractions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUMxQyxpREFBaUQ7O0FBRWpELElBQU8sT0FBTyxXQUFXLG9CQUFvQixDQUFDLENBQUM7QUFDL0MsSUFBTyxjQUFjLFdBQVcsbUJBQW1CLENBQUMsQ0FBQztBQUNyRCxJQUFPLGVBQWUsV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3ZELElBQU8sb0JBQW9CLFdBQVcsd0JBQXdCLENBQUMsQ0FBQztBQUVoRTs7c0RBRXNEO0FBQzNDLGdCQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGtDQUFrQztBQUMvRCxhQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQjtBQUM1QyxZQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLDZDQUE2QztBQUU3RTs7c0RBRXNEO0FBQzNDLGFBQUssR0FBRyxjQUFjLENBQUM7QUFFbEM7O3NEQUVzRDtBQUMzQyxXQUFHLEdBQUcsZUFBZSxDQUFDO0FBRWpDOztzREFFc0Q7QUFDM0MsbUJBQVcsR0FBRyxvQkFBb0IsQ0FBQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJ0eXBpbmdzL21haW4uZC50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9zbWFydGNsaS5pbnRlcmZhY2VzLnRzXCIgLz5cblxuaW1wb3J0IHBsdWdpbnMgPSByZXF1aXJlKFwiLi9zbWFydGNsaS5wbHVnaW5zXCIpO1xuaW1wb3J0IFNtYXJ0Y2xpQ2hlY2tzID0gcmVxdWlyZShcIi4vc21hcnRjbGkuY2hlY2tzXCIpO1xuaW1wb3J0IFNtYXJ0Y2xpR2V0dGVycyA9IHJlcXVpcmUoXCIuL3NtYXJ0Y2xpLmdldHRlcnNcIik7XG5pbXBvcnQgU21hcnRjbGlJbnRlcmFjdGlvbnMgPSByZXF1aXJlKFwiLi9zbWFydGNsaS5pbnRlcmFjdGlvblwiKTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tLS0tLS0tLS0gcGx1Z2lucyBmb3IgZGlyZWN0IHVzZSAtLS0tLS0tLS0tLS0tLSAqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmV4cG9ydCBsZXQgaW5xdWlyZXIgPSBwbHVnaW5zLmlucXVpcmVyOyAvL2lucXVpcmVyIGlzIGZvciBhc2tpbmcgcXVlc3Rpb25zXG5leHBvcnQgbGV0IGNsaWZmID0gcGx1Z2lucy5jbGlmZjsgLy8gZm9ybWF0cyBjbGkgb3V0cHV0XG5leHBvcnQgbGV0IGFyZ3YgPSBwbHVnaW5zLmFyZ3Y7IC8vYXJndiBnZXRzIGluaXRpYWwgY2xpIGNvbW1hbmRzIGFuZCBvcHRpb25zLlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogLS0tLS0tLS0tLSBjaGVja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuZXhwb3J0IGxldCBjaGVjayA9IFNtYXJ0Y2xpQ2hlY2tzO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogLS0tLS0tLS0tLSBnZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuZXhwb3J0IGxldCBnZXQgPSBTbWFydGNsaUdldHRlcnM7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiAtLS0tLS0tLS0tIGludGVyYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuZXhwb3J0IGxldCBpbnRlcmFjdGlvbiA9IFNtYXJ0Y2xpSW50ZXJhY3Rpb25zO1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
 | 
				
			||||||
							
								
								
									
										62
									
								
								dist/smartcli.checks.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								dist/smartcli.checks.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					var plugins = require("./smartcli.plugins");
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * checks for a special command string and returns true if found.
 | 
				
			||||||
 | 
					 * @param commandString
 | 
				
			||||||
 | 
					 * @returns {boolean}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					exports.command = function (commandString) {
 | 
				
			||||||
 | 
					    if (plugins.argv._.indexOf(commandString) == 0) {
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * checks if a command is present, returns true if yes, false if no.
 | 
				
			||||||
 | 
					 * @returns {boolean}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					exports.commandPresence = function () {
 | 
				
			||||||
 | 
					    if (plugins.argv._.length > 0) {
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * checks for an special command argument at a certain position, returns true if matches, returns false if not
 | 
				
			||||||
 | 
					 * @param level
 | 
				
			||||||
 | 
					 * @returns {boolean}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					exports.commandArgument = function (commandArgumentString, level) {
 | 
				
			||||||
 | 
					    if (level === void 0) { level = 1; }
 | 
				
			||||||
 | 
					    if (exports.commandArgumentPresence(level) && (plugins.argv._[level] == commandArgumentString)) {
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					exports.commandArgumentPresence = function (level) {
 | 
				
			||||||
 | 
					    if (level === void 0) { level = 1; }
 | 
				
			||||||
 | 
					    if (plugins.argv._.length >= (level + 1)) {
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * checks for a specific option string, returns true if yes, returns false if no
 | 
				
			||||||
 | 
					 * @returns {boolean}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					exports.option = function (optionString) {
 | 
				
			||||||
 | 
					    if (plugins.smartparam.exists(plugins.argv, optionString)) {
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					exports.optionPresence = function () {
 | 
				
			||||||
 | 
					    if (plugins.argv.indexOf() != -1) {
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0Y2xpLmNoZWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsaURBQWlEOztBQUVqRCxJQUFPLE9BQU8sV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBRS9DOzs7O0dBSUc7QUFDUSxlQUFPLEdBQUcsVUFBUyxhQUFvQjtJQUM5QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUNELE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ1EsdUJBQWUsR0FBRztJQUN6QixFQUFFLENBQUEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQztRQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDUSx1QkFBZSxHQUFHLFVBQVMscUJBQTRCLEVBQUMsS0FBZ0I7SUFBaEIscUJBQWdCLEdBQWhCLFNBQWdCO0lBQy9FLEVBQUUsQ0FBQSxDQUFDLCtCQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUkscUJBQXFCLENBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckYsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFUywrQkFBdUIsR0FBRyxVQUFTLEtBQWdCO0lBQWhCLHFCQUFnQixHQUFoQixTQUFnQjtJQUMxRCxFQUFFLENBQUEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ1EsY0FBTSxHQUFHLFVBQVMsWUFBWTtJQUNyQyxFQUFFLENBQUEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVTLHNCQUFjLEdBQUc7SUFDeEIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQTtJQUNmLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsImZpbGUiOiJzbWFydGNsaS5jaGVja3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwidHlwaW5ncy9tYWluLmQudHNcIiAvPlxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vc21hcnRjbGkuaW50ZXJmYWNlcy50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRjbGkucGx1Z2luc1wiKTtcblxuLyoqXG4gKiBjaGVja3MgZm9yIGEgc3BlY2lhbCBjb21tYW5kIHN0cmluZyBhbmQgcmV0dXJucyB0cnVlIGlmIGZvdW5kLlxuICogQHBhcmFtIGNvbW1hbmRTdHJpbmdcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgbGV0IGNvbW1hbmQgPSBmdW5jdGlvbihjb21tYW5kU3RyaW5nOnN0cmluZyk6Ym9vbGVhbiB7XG4gICAgaWYgKHBsdWdpbnMuYXJndi5fLmluZGV4T2YoY29tbWFuZFN0cmluZykgPT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIGNoZWNrcyBpZiBhIGNvbW1hbmQgaXMgcHJlc2VudCwgcmV0dXJucyB0cnVlIGlmIHllcywgZmFsc2UgaWYgbm8uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGxldCBjb21tYW5kUHJlc2VuY2UgPSBmdW5jdGlvbigpOmJvb2xlYW4ge1xuICAgIGlmKHBsdWdpbnMuYXJndi5fLmxlbmd0aCA+IDApe1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBjaGVja3MgZm9yIGFuIHNwZWNpYWwgY29tbWFuZCBhcmd1bWVudCBhdCBhIGNlcnRhaW4gcG9zaXRpb24sIHJldHVybnMgdHJ1ZSBpZiBtYXRjaGVzLCByZXR1cm5zIGZhbHNlIGlmIG5vdFxuICogQHBhcmFtIGxldmVsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGxldCBjb21tYW5kQXJndW1lbnQgPSBmdW5jdGlvbihjb21tYW5kQXJndW1lbnRTdHJpbmc6c3RyaW5nLGxldmVsOm51bWJlciA9IDEpOmJvb2xlYW4ge1xuICAgIGlmKGNvbW1hbmRBcmd1bWVudFByZXNlbmNlKGxldmVsKSAmJiAocGx1Z2lucy5hcmd2Ll9bbGV2ZWxdID09IGNvbW1hbmRBcmd1bWVudFN0cmluZyApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgbGV0IGNvbW1hbmRBcmd1bWVudFByZXNlbmNlID0gZnVuY3Rpb24obGV2ZWw6bnVtYmVyID0gMSkge1xuICAgIGlmKHBsdWdpbnMuYXJndi5fLmxlbmd0aCA+PSAobGV2ZWwgKyAxKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBjaGVja3MgZm9yIGEgc3BlY2lmaWMgb3B0aW9uIHN0cmluZywgcmV0dXJucyB0cnVlIGlmIHllcywgcmV0dXJucyBmYWxzZSBpZiBub1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBsZXQgb3B0aW9uID0gZnVuY3Rpb24ob3B0aW9uU3RyaW5nKTpib29sZWFuIHtcbiAgICBpZihwbHVnaW5zLnNtYXJ0cGFyYW0uZXhpc3RzKHBsdWdpbnMuYXJndiwgb3B0aW9uU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGxldCBvcHRpb25QcmVzZW5jZSA9IGZ1bmN0aW9uKCk6Ym9vbGVhbiB7XG4gICAgaWYgKHBsdWdpbnMuYXJndi5pbmRleE9mKCkgIT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
 | 
				
			||||||
							
								
								
									
										103
									
								
								dist/smartcli.getters.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								dist/smartcli.getters.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										55
									
								
								dist/smartcli.interaction.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								dist/smartcli.interaction.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					var plugins = require("./smartcli.plugins");
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * executes callback with answer to question as argument
 | 
				
			||||||
 | 
					 * @param questionString the question you want to ask the user
 | 
				
			||||||
 | 
					 * @param cb the function to execute with answer as param
 | 
				
			||||||
 | 
					 * @returns {null}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					exports.getAnswer = function (questionString, cb) {
 | 
				
			||||||
 | 
					    if (typeof questionString != 'string') {
 | 
				
			||||||
 | 
					        plugins.beautylog.error('no question specified');
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    //make inquirer compatible question object
 | 
				
			||||||
 | 
					    var question = {
 | 
				
			||||||
 | 
					        type: "input",
 | 
				
			||||||
 | 
					        name: "userFeedback",
 | 
				
			||||||
 | 
					        message: questionString,
 | 
				
			||||||
 | 
					        validate: function (value) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    plugins.inquirer.prompt([question], function (answers) {
 | 
				
			||||||
 | 
					        var answer = answers.userFeedback;
 | 
				
			||||||
 | 
					        cb(answer);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param questionString
 | 
				
			||||||
 | 
					 * @param choiceOptions
 | 
				
			||||||
 | 
					 * @param cb
 | 
				
			||||||
 | 
					 * @returns {null}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					exports.getChoice = function (questionString, choiceOptions, cb) {
 | 
				
			||||||
 | 
					    if (!Array.isArray(choiceOptions)) {
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    //make inquirer compatible question object
 | 
				
			||||||
 | 
					    var question = {
 | 
				
			||||||
 | 
					        type: "list",
 | 
				
			||||||
 | 
					        name: "userFeedback",
 | 
				
			||||||
 | 
					        message: questionString,
 | 
				
			||||||
 | 
					        choices: choiceOptions,
 | 
				
			||||||
 | 
					        filter: function (val) { return val.toLowerCase(); }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    plugins.inquirer.prompt(question, function (answers) {
 | 
				
			||||||
 | 
					        var answer = answers.userFeedback;
 | 
				
			||||||
 | 
					        cb(answer);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0Y2xpLmludGVyYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUMxQyxpREFBaUQ7O0FBRWpELElBQU8sT0FBTyxXQUFXLG9CQUFvQixDQUFDLENBQUM7QUFFL0M7Ozs7O0dBS0c7QUFDUSxpQkFBUyxHQUFHLFVBQVMsY0FBcUIsRUFBRSxFQUFFO0lBQ3JELEVBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBYyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCwwQ0FBMEM7SUFDMUMsSUFBSSxRQUFRLEdBQUc7UUFDWCxJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxjQUFjO1FBQ3BCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFFBQVEsRUFBRSxVQUFVLEtBQUs7WUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQ0osQ0FBQztJQUVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUMsVUFBUyxPQUFPO1FBQy9DLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDbEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDUSxpQkFBUyxHQUFHLFVBQVMsY0FBcUIsRUFBRSxhQUFzQixFQUFFLEVBQUU7SUFDN0UsRUFBRSxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxRQUFRLEdBQUc7UUFDWCxJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSxjQUFjO1FBQ3BCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLE1BQU0sRUFBRSxVQUFVLEdBQUcsSUFBSyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN4RCxDQUFDO0lBRUYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFDLFVBQVMsT0FBTztRQUM3QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBRVAsQ0FBQyxDQUFDIiwiZmlsZSI6InNtYXJ0Y2xpLmludGVyYWN0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cInR5cGluZ3MvbWFpbi5kLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3NtYXJ0Y2xpLmludGVyZmFjZXMudHNcIiAvPlxuXG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0Y2xpLnBsdWdpbnNcIik7XG5cbi8qKlxuICogZXhlY3V0ZXMgY2FsbGJhY2sgd2l0aCBhbnN3ZXIgdG8gcXVlc3Rpb24gYXMgYXJndW1lbnRcbiAqIEBwYXJhbSBxdWVzdGlvblN0cmluZyB0aGUgcXVlc3Rpb24geW91IHdhbnQgdG8gYXNrIHRoZSB1c2VyXG4gKiBAcGFyYW0gY2IgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2l0aCBhbnN3ZXIgYXMgcGFyYW1cbiAqIEByZXR1cm5zIHtudWxsfVxuICovXG5leHBvcnQgbGV0IGdldEFuc3dlciA9IGZ1bmN0aW9uKHF1ZXN0aW9uU3RyaW5nOnN0cmluZywgY2IpIHtcbiAgICBpZiAodHlwZW9mIHF1ZXN0aW9uU3RyaW5nICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmVycm9yKCdubyBxdWVzdGlvbiBzcGVjaWZpZWQnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vbWFrZSBpbnF1aXJlciBjb21wYXRpYmxlIHF1ZXN0aW9uIG9iamVjdFxuICAgIHZhciBxdWVzdGlvbiA9IHtcbiAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICBuYW1lOiBcInVzZXJGZWVkYmFja1wiLFxuICAgICAgICBtZXNzYWdlOiBxdWVzdGlvblN0cmluZyxcbiAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHBsdWdpbnMuaW5xdWlyZXIucHJvbXB0KFtxdWVzdGlvbl0sZnVuY3Rpb24oYW5zd2Vycyl7XG4gICAgICAgIHZhciBhbnN3ZXIgPSBhbnN3ZXJzLnVzZXJGZWVkYmFjaztcbiAgICAgICAgY2IoYW5zd2VyKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBxdWVzdGlvblN0cmluZ1xuICogQHBhcmFtIGNob2ljZU9wdGlvbnNcbiAqIEBwYXJhbSBjYlxuICogQHJldHVybnMge251bGx9XG4gKi9cbmV4cG9ydCBsZXQgZ2V0Q2hvaWNlID0gZnVuY3Rpb24ocXVlc3Rpb25TdHJpbmc6c3RyaW5nLCBjaG9pY2VPcHRpb25zOnN0cmluZ1tdLCBjYikge1xuICAgIGlmKCFBcnJheS5pc0FycmF5KGNob2ljZU9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vbWFrZSBpbnF1aXJlciBjb21wYXRpYmxlIHF1ZXN0aW9uIG9iamVjdFxuICAgIHZhciBxdWVzdGlvbiA9IHtcbiAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgIG5hbWU6IFwidXNlckZlZWRiYWNrXCIsXG4gICAgICAgIG1lc3NhZ2U6IHF1ZXN0aW9uU3RyaW5nLFxuICAgICAgICBjaG9pY2VzOiBjaG9pY2VPcHRpb25zLFxuICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCB2YWwgKSB7IHJldHVybiB2YWwudG9Mb3dlckNhc2UoKTsgfVxuICAgIH07XG5cbiAgICBwbHVnaW5zLmlucXVpcmVyLnByb21wdChxdWVzdGlvbixmdW5jdGlvbihhbnN3ZXJzKXtcbiAgICAgICAgdmFyIGFuc3dlciA9IGFuc3dlcnMudXNlckZlZWRiYWNrO1xuICAgICAgICBjYihhbnN3ZXIpO1xuICAgIH0pO1xuXG59OyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
 | 
				
			||||||
							
								
								
									
										3
									
								
								dist/smartcli.interfaces.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								dist/smartcli.interfaces.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzbWFydGNsaS5pbnRlcmZhY2VzLmpzIiwic291cmNlc0NvbnRlbnQiOltdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
 | 
				
			||||||
							
								
								
									
										10
									
								
								dist/smartcli.plugins.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								dist/smartcli.plugins.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
 | 
					"use strict";
 | 
				
			||||||
 | 
					exports.path = require("path");
 | 
				
			||||||
 | 
					exports.beautylog = require("beautylog");
 | 
				
			||||||
 | 
					exports.cliff = require("cliff");
 | 
				
			||||||
 | 
					exports.inquirer = require("inquirer");
 | 
				
			||||||
 | 
					exports.smartparam = require("smartparam");
 | 
				
			||||||
 | 
					exports.argv = require('yargs').argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDOztBQUUvQixZQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGFBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsZ0JBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0Isa0JBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbkMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMiLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJ0eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmV4cG9ydCBsZXQgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuZXhwb3J0IGxldCBiZWF1dHlsb2cgPSByZXF1aXJlKFwiYmVhdXR5bG9nXCIpO1xuZXhwb3J0IGxldCBjbGlmZiA9IHJlcXVpcmUoXCJjbGlmZlwiKTtcbmV4cG9ydCBsZXQgaW5xdWlyZXIgPSByZXF1aXJlKFwiaW5xdWlyZXJcIik7XG5leHBvcnQgbGV0IHNtYXJ0cGFyYW0gPSByZXF1aXJlKFwic21hcnRwYXJhbVwiKTtcbmV4cG9ydCBsZXQgYXJndiA9IHJlcXVpcmUoJ3lhcmdzJykuYXJndjsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										46
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								test/test.ts
									
									
									
									
									
								
							@@ -1,38 +1,26 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					/// <reference path="../ts/typings/main.d.ts" />
 | 
				
			||||||
var smartcli = require("../index.js");
 | 
					let smartcli = require("../dist/index.js");
 | 
				
			||||||
var beautylog = require("beautylog");
 | 
					let should = req
 | 
				
			||||||
 | 
					 | 
				
			||||||
var commandsString:string = 'You specified the following commands:';
 | 
					 | 
				
			||||||
var commands = smartcli.get.commandArray();
 | 
					 | 
				
			||||||
for (var key in commands) {
 | 
					 | 
				
			||||||
    commandsString = commandsString + ' ' + commands[key];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
beautylog.log(commandsString);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ------------------------------------------------------------------ *
 | 
					/* ------------------------------------------------------------------ *
 | 
				
			||||||
 * ------------------- CHECKS TESTS --------------------------------- *
 | 
					 * ------------------- CHECKS TESTS --------------------------------- *
 | 
				
			||||||
 * ------------------------------------------------------------------ */
 | 
					 * ------------------------------------------------------------------ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe("smartcli",function(){
 | 
				
			||||||
 | 
					    describe(".check",function(){
 | 
				
			||||||
 | 
					        describe(".command",function(){
 | 
				
			||||||
 | 
					            it("should return true when specified command is found",function(){
 | 
				
			||||||
 | 
					                smartcli.check.command("jazz").should.be.true();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            it("should return false when specified command is NOT found",function(){
 | 
				
			||||||
 | 
					                smartcli.check.command("rock").should.be.false();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }); 
 | 
				
			||||||
 | 
					        describe(".commandPresence",function(){
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
/**
 | 
					        });
 | 
				
			||||||
 *
 | 
					    });
 | 
				
			||||||
 */
 | 
					});
 | 
				
			||||||
var checkCommandTest = function() {
 | 
					 | 
				
			||||||
    if (smartcli.check.command('jazz')) {
 | 
					 | 
				
			||||||
        beautylog.success('One of your commands is jazz. It is supposed to be there. Perfect!');
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        beautylog.error('None of your commands is jazz. You need to check this');
 | 
					 | 
				
			||||||
        process.exit(1);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (!smartcli.check.command('punk')) {
 | 
					 | 
				
			||||||
        beautylog.success('None of your commands is punk. It is not supposed to be there. Perfect!');
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        beautylog.error('One of your commands seems to be punk. Something is wrong here');
 | 
					 | 
				
			||||||
        process.exit(1);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
checkCommandTest();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var checkCommandPresenceTest = function() {
 | 
					var checkCommandPresenceTest = function() {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ts/index.ts
									
									
									
									
									
								
							@@ -1,10 +1,10 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
/// <reference path="./smartcli.interfaces.ts" />
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
/// <reference path="./smartcli.getters.ts" />
 | 
					 | 
				
			||||||
/// <reference path="./smartcli.interaction.ts" />
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import plugins = require("./smartcli.plugins");
 | 
					import plugins = require("./smartcli.plugins");
 | 
				
			||||||
import SmartcliChecks = require("./smartcli.checks");
 | 
					import SmartcliChecks = require("./smartcli.checks");
 | 
				
			||||||
 | 
					import SmartcliGetters = require("./smartcli.getters");
 | 
				
			||||||
 | 
					import SmartcliInteractions = require("./smartcli.interaction");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ------------------------------------------------ *
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 * ---------- plugins for direct use -------------- *
 | 
					 * ---------- plugins for direct use -------------- *
 | 
				
			||||||
@@ -14,12 +14,16 @@ export let cliff = plugins.cliff; // formats cli output
 | 
				
			|||||||
export let argv = plugins.argv; //argv gets initial cli commands and options.
 | 
					export let argv = plugins.argv; //argv gets initial cli commands and options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ------------------------------------------------ *
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 * ---------- checks -------------- *
 | 
					 * ---------- checks ------------------------------ *
 | 
				
			||||||
 * ------------------------------------------------ */
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
 | 
					export let check = SmartcliChecks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
 | 
					 * ---------- getters ----------------------------- *
 | 
				
			||||||
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
 | 
					export let get = SmartcliGetters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ------------------------------------------------ *
 | 
				
			||||||
//init checks. Checks return boolean. That means they can be used as question with an answer of yes or no.
 | 
					 * ---------- interaction ----------------------------- *
 | 
				
			||||||
 | 
					 * ------------------------------------------------ */
 | 
				
			||||||
SmartcliGetters.init(); // is defined in smartcli.getters.ts
 | 
					export let interaction = SmartcliInteractions;
 | 
				
			||||||
SmartcliInteraction.init(); // is defined in smartcli.interaction.ts
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import plugins = require("./smartcli.plugins");
 | 
					import plugins = require("./smartcli.plugins");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,110 +1,110 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
module SmartcliGetters {
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
    export function init() {
 | 
					 | 
				
			||||||
        smartcli.get = {};
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         *
 | 
					 | 
				
			||||||
         * @param commandString
 | 
					 | 
				
			||||||
         * @returns {{specified: boolean, name: any, arguments: CliCommandArgument}}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.get.command = function():CliCommand {
 | 
					 | 
				
			||||||
            var cliCommand = {
 | 
					 | 
				
			||||||
                specified: smartcli.check.commandPresence(),
 | 
					 | 
				
			||||||
                name: plugins.argv._[0],
 | 
					 | 
				
			||||||
                arguments: smartcli.get.commandArgs()
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return cliCommand;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /**
 | 
					import plugins = require("./smartcli.plugins");
 | 
				
			||||||
         * gets the second or higher value of plugins.argv._ if specified and returns it as commandArgument
 | 
					import SmartcliChecks = require("./smartcli.checks");
 | 
				
			||||||
         * @param argumentLevel
 | 
					 | 
				
			||||||
         * @returns {{specified: (boolean|boolean), name}}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.get.commandArgument = function(argumentLevel):CliCommandArgument {
 | 
					 | 
				
			||||||
            var commandArgument:CliCommandArgument = {
 | 
					 | 
				
			||||||
                specified: false,
 | 
					 | 
				
			||||||
                name: "undefined",
 | 
					 | 
				
			||||||
                level:argumentLevel
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
            if(argumentLevel < 1) {
 | 
					 | 
				
			||||||
                plugins.beautylog.error("smartcli.get.argument cannot be invoked with an argumentLevel smaller than 1");
 | 
					 | 
				
			||||||
                return commandArgument;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if(smartcli.check.commandArgumentPresence(argumentLevel)) {
 | 
					 | 
				
			||||||
                commandArgument.specified = true;
 | 
					 | 
				
			||||||
                commandArgument.name = plugins.argv._[argumentLevel];
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return commandArgument;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /**
 | 
					/**
 | 
				
			||||||
         * returns array with commandArgs
 | 
					 *
 | 
				
			||||||
         * @returns {CliCommandArgument[]}
 | 
					 * @param commandString
 | 
				
			||||||
         */
 | 
					 * @returns {{specified: boolean, name: any, arguments: CliCommandArgument}}
 | 
				
			||||||
        smartcli.get.commandArgs = function():CliCommandArgument[] {
 | 
					 */
 | 
				
			||||||
            var commandArgs:CliCommandArgument[] = [];
 | 
					export let command = function():CliCommand {
 | 
				
			||||||
            var argsArray = smartcli.get.commandArray().slice(0);
 | 
					    var cliCommand = {
 | 
				
			||||||
            argsArray.shift();
 | 
					        specified: SmartcliChecks.commandPresence(),
 | 
				
			||||||
            for (var item in argsArray){
 | 
					        name: plugins.argv._[0],
 | 
				
			||||||
                var commandArgument:CliCommandArgument = {
 | 
					        arguments: commandArgs()
 | 
				
			||||||
                    specified:true,
 | 
					 | 
				
			||||||
                    name:argsArray[item],
 | 
					 | 
				
			||||||
                    level: item + 1
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                commandArgs.push(commandArgument);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return commandArgs;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * returns complete command array
 | 
					 | 
				
			||||||
         * @returns {any}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.get.commandArray = function ():string[] {
 | 
					 | 
				
			||||||
            var commandArray = plugins.argv._;
 | 
					 | 
				
			||||||
            return commandArray;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * returns a cli option
 | 
					 | 
				
			||||||
         * @param optionName
 | 
					 | 
				
			||||||
         * @returns {CliOption}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.get.option = function(optionName:string):CliOption {
 | 
					 | 
				
			||||||
            var cliOption:CliOption = {
 | 
					 | 
				
			||||||
                name:optionName,
 | 
					 | 
				
			||||||
                specified: false,
 | 
					 | 
				
			||||||
                value: false
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
            if (plugins.smartparam.exists(plugins.argv,optionName)) {
 | 
					 | 
				
			||||||
                cliOption.name = optionName;
 | 
					 | 
				
			||||||
                cliOption.specified = true;
 | 
					 | 
				
			||||||
                cliOption.value = plugins.argv[optionName] //we already know from the "if" above that the value is available.
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return cliOption;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        smartcli.get.options = function() {
 | 
					 | 
				
			||||||
            var options = {};
 | 
					 | 
				
			||||||
            for (var key in plugins.argv) {
 | 
					 | 
				
			||||||
                if (key != "_") {
 | 
					 | 
				
			||||||
                    options['key'] = plugins.argv['key'];
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return options;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * returns Directory of cwd
 | 
					 | 
				
			||||||
         * @returns {{path: string}}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.get.cwd = function():Directory {
 | 
					 | 
				
			||||||
            return {
 | 
					 | 
				
			||||||
                path: process.cwd()
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					    return cliCommand;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * gets the second or higher value of plugins.argv._ if specified and returns it as commandArgument
 | 
				
			||||||
 | 
					 * @param argumentLevel
 | 
				
			||||||
 | 
					 * @returns {{specified: (boolean|boolean), name}}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export let commandArgument = function(argumentLevel):CliCommandArgument {
 | 
				
			||||||
 | 
					    var commandArgument:CliCommandArgument = {
 | 
				
			||||||
 | 
					        specified: false,
 | 
				
			||||||
 | 
					        name: "undefined",
 | 
				
			||||||
 | 
					        level:argumentLevel
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    if(argumentLevel < 1) {
 | 
				
			||||||
 | 
					        plugins.beautylog.error("smartcli.get.argument cannot be invoked with an argumentLevel smaller than 1");
 | 
				
			||||||
 | 
					        return commandArgument;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if(SmartcliChecks.commandArgumentPresence(argumentLevel)) {
 | 
				
			||||||
 | 
					        commandArgument.specified = true;
 | 
				
			||||||
 | 
					        commandArgument.name = plugins.argv._[argumentLevel];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return commandArgument;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * returns array with commandArgs
 | 
				
			||||||
 | 
					 * @returns {CliCommandArgument[]}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export let commandArgs = function():CliCommandArgument[] {
 | 
				
			||||||
 | 
					    var commandArgs:CliCommandArgument[] = [];
 | 
				
			||||||
 | 
					    var argsArray = commandArray().slice(0);
 | 
				
			||||||
 | 
					    argsArray.shift();
 | 
				
			||||||
 | 
					    for (var item in argsArray){
 | 
				
			||||||
 | 
					        var commandArgument:CliCommandArgument = {
 | 
				
			||||||
 | 
					            specified:true,
 | 
				
			||||||
 | 
					            name:argsArray[item],
 | 
				
			||||||
 | 
					            level: item + 1
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        commandArgs.push(commandArgument);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return commandArgs;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * returns complete command array
 | 
				
			||||||
 | 
					 * @returns {any}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export let commandArray = function ():string[] {
 | 
				
			||||||
 | 
					    var commandArray = plugins.argv._;
 | 
				
			||||||
 | 
					    return commandArray;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * returns a cli option
 | 
				
			||||||
 | 
					 * @param optionName
 | 
				
			||||||
 | 
					 * @returns {CliOption}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export let option = function(optionName:string):CliOption {
 | 
				
			||||||
 | 
					    var cliOption:CliOption = {
 | 
				
			||||||
 | 
					        name:optionName,
 | 
				
			||||||
 | 
					        specified: false,
 | 
				
			||||||
 | 
					        value: false
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    if (plugins.smartparam.exists(plugins.argv,optionName)) {
 | 
				
			||||||
 | 
					        cliOption.name = optionName;
 | 
				
			||||||
 | 
					        cliOption.specified = true;
 | 
				
			||||||
 | 
					        cliOption.value = plugins.argv[optionName] //we already know from the "if" above that the value is available.
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return cliOption;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export let options = function() {
 | 
				
			||||||
 | 
					    var options = {};
 | 
				
			||||||
 | 
					    for (var key in plugins.argv) {
 | 
				
			||||||
 | 
					        if (key != "_") {
 | 
				
			||||||
 | 
					            options['key'] = plugins.argv['key'];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return options;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * returns Directory of cwd
 | 
				
			||||||
 | 
					 * @returns {{path: string}}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export let cwd = function():Directory {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        path: process.cwd()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -1,61 +1,59 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					/// <reference path="typings/main.d.ts" />
 | 
				
			||||||
module SmartcliInteraction {
 | 
					/// <reference path="./smartcli.interfaces.ts" />
 | 
				
			||||||
    export function init(){
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        smartcli.interaction = {};
 | 
					import plugins = require("./smartcli.plugins");
 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * executes callback with answer to question as argument
 | 
					 | 
				
			||||||
         * @param questionString the question you want to ask the user
 | 
					 | 
				
			||||||
         * @param cb the function to execute with answer as param
 | 
					 | 
				
			||||||
         * @returns {null}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.interaction.getAnswer = function(questionString:string, cb) {
 | 
					 | 
				
			||||||
            if (typeof questionString != 'string') {
 | 
					 | 
				
			||||||
                plugins.beautylog.error('no question specified');
 | 
					 | 
				
			||||||
                return null;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            //make inquirer compatible question object
 | 
					 | 
				
			||||||
            var question = {
 | 
					 | 
				
			||||||
                type: "input",
 | 
					 | 
				
			||||||
                name: "userFeedback",
 | 
					 | 
				
			||||||
                message: questionString,
 | 
					 | 
				
			||||||
                validate: function( value ) {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            plugins.inquirer.prompt([question],function(answers){
 | 
					/**
 | 
				
			||||||
                var answer = answers.userFeedback;
 | 
					 * executes callback with answer to question as argument
 | 
				
			||||||
                cb(answer);
 | 
					 * @param questionString the question you want to ask the user
 | 
				
			||||||
            });
 | 
					 * @param cb the function to execute with answer as param
 | 
				
			||||||
        };
 | 
					 * @returns {null}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
        /**
 | 
					export let getAnswer = function(questionString:string, cb) {
 | 
				
			||||||
         *
 | 
					    if (typeof questionString != 'string') {
 | 
				
			||||||
         * @param questionString
 | 
					        plugins.beautylog.error('no question specified');
 | 
				
			||||||
         * @param choiceOptions
 | 
					        return null;
 | 
				
			||||||
         * @param cb
 | 
					 | 
				
			||||||
         * @returns {null}
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        smartcli.interaction.getChoice = function(questionString:string, choiceOptions:string[], cb) {
 | 
					 | 
				
			||||||
            if(!Array.isArray(choiceOptions)) {
 | 
					 | 
				
			||||||
                return null;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //make inquirer compatible question object
 | 
					 | 
				
			||||||
            var question = {
 | 
					 | 
				
			||||||
                type: "list",
 | 
					 | 
				
			||||||
                name: "userFeedback",
 | 
					 | 
				
			||||||
                message: questionString,
 | 
					 | 
				
			||||||
                choices: choiceOptions,
 | 
					 | 
				
			||||||
                filter: function( val ) { return val.toLowerCase(); }
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            plugins.inquirer.prompt(question,function(answers){
 | 
					 | 
				
			||||||
                var answer = answers.userFeedback;
 | 
					 | 
				
			||||||
                cb(answer);
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					    //make inquirer compatible question object
 | 
				
			||||||
 | 
					    var question = {
 | 
				
			||||||
 | 
					        type: "input",
 | 
				
			||||||
 | 
					        name: "userFeedback",
 | 
				
			||||||
 | 
					        message: questionString,
 | 
				
			||||||
 | 
					        validate: function( value ) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    plugins.inquirer.prompt([question],function(answers){
 | 
				
			||||||
 | 
					        var answer = answers.userFeedback;
 | 
				
			||||||
 | 
					        cb(answer);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @param questionString
 | 
				
			||||||
 | 
					 * @param choiceOptions
 | 
				
			||||||
 | 
					 * @param cb
 | 
				
			||||||
 | 
					 * @returns {null}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export let getChoice = function(questionString:string, choiceOptions:string[], cb) {
 | 
				
			||||||
 | 
					    if(!Array.isArray(choiceOptions)) {
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //make inquirer compatible question object
 | 
				
			||||||
 | 
					    var question = {
 | 
				
			||||||
 | 
					        type: "list",
 | 
				
			||||||
 | 
					        name: "userFeedback",
 | 
				
			||||||
 | 
					        message: questionString,
 | 
				
			||||||
 | 
					        choices: choiceOptions,
 | 
				
			||||||
 | 
					        filter: function( val ) { return val.toLowerCase(); }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    plugins.inquirer.prompt(question,function(answers){
 | 
				
			||||||
 | 
					        var answer = answers.userFeedback;
 | 
				
			||||||
 | 
					        cb(answer);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -1,5 +1,3 @@
 | 
				
			|||||||
/// <reference path="typings/main.d.ts" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
interface CliOption {
 | 
					interface CliOption {
 | 
				
			||||||
    name: string;
 | 
					    name: string;
 | 
				
			||||||
    specified:boolean;
 | 
					    specified:boolean;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "ambientDependencies": {
 | 
					  "ambientDependencies": {
 | 
				
			||||||
 | 
					    "mocha": "registry:dt/mocha#2.2.5+20151023103246",
 | 
				
			||||||
    "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
 | 
					    "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								ts/typings/browser.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								ts/typings/browser.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1 +1,2 @@
 | 
				
			|||||||
/// <reference path="browser/ambient/node/node.d.ts" />
 | 
					/// <reference path="browser/ambient/mocha/index.d.ts" />
 | 
				
			||||||
 | 
					/// <reference path="browser/ambient/node/index.d.ts" />
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2180
									
								
								ts/typings/browser/ambient/node/node.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2180
									
								
								ts/typings/browser/ambient/node/node.d.ts
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3
									
								
								ts/typings/main.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								ts/typings/main.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1 +1,2 @@
 | 
				
			|||||||
/// <reference path="main/ambient/node/node.d.ts" />
 | 
					/// <reference path="main/ambient/mocha/index.d.ts" />
 | 
				
			||||||
 | 
					/// <reference path="main/ambient/node/index.d.ts" />
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2180
									
								
								ts/typings/main/ambient/node/node.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2180
									
								
								ts/typings/main/ambient/node/node.d.ts
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user