start interaction module
This commit is contained in:
parent
9e5fb7a13a
commit
c7a647d4ef
36
README.md
36
README.md
@ -17,38 +17,22 @@ this plugin tries to establish some logic in which CLI tools work.
|
|||||||
take the following commandline input:
|
take the following commandline input:
|
||||||
|
|
||||||
```
|
```
|
||||||
mytool function argument1 argument2 --option1 option1Value --option2 option2Value
|
mytool function argument1 argument2 --option1 -o2 option2Value
|
||||||
```
|
```
|
||||||
|
|
||||||
* 'mytool' obviously is the tool (like git)
|
* 'mytool' obviously is the tool (like git)
|
||||||
* function is the main thing the tool shall do (like commit)
|
* function is the main thing the tool shall do (like commit)
|
||||||
* option is an option you can add (like -m for message)
|
* argument1 and argument2 are arguments
|
||||||
|
* option1 is a longform option you can add (like --message for message)
|
||||||
* optionValue is the referenced option value (like a commit message)
|
* optionValue is the referenced option value (like a commit message)
|
||||||
|
|
||||||
|
|
||||||
### The inner organization of smartcli
|
|
||||||
**smartcli** exposes three major groups of functions:
|
|
||||||
|
|
||||||
* check functions
|
|
||||||
* are grouped in **smartcli.checks** object
|
|
||||||
* get functions
|
|
||||||
* are grouped in **smartcli.get** object
|
|
||||||
* async interaction functions
|
|
||||||
* are grouped in **smartcli.interaction** object
|
|
||||||
|
|
||||||
|
|
||||||
### Methods
|
|
||||||
The examples are written in TypeScript
|
|
||||||
```typescript
|
```typescript
|
||||||
import * as smartcli from "smartcli"
|
import {Smartcli} from "smartcli"
|
||||||
|
mySmartcli = new Smartcli();
|
||||||
|
mySmartcli.standardTask()
|
||||||
|
.then(argvArg => {
|
||||||
|
// do something if program is called without an command
|
||||||
|
});
|
||||||
|
|
||||||
/* -------------- Check Functions -------------------*/
|
mySmartcli.question
|
||||||
smartcli.check.command("jazz"); // check for a special command.
|
|
||||||
smartcli.check.commandPresence() // check if any command is specified
|
|
||||||
smartcli.check.commandArguemnt("myargument",1) // checks if a special argument is given, second argument is level
|
|
||||||
smartcli.check.commandArguemntPresence // checks of any Argument is present
|
|
||||||
smartcli.check.option("someoption") // checks for a specific option
|
|
||||||
smartcli.check.optionPresence() // checks if any option is specified
|
|
||||||
smartcli.get.option('myoption'); //
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
30
dist/smartcli.classes.interaction.d.ts
vendored
30
dist/smartcli.classes.interaction.d.ts
vendored
@ -1,4 +1,32 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
export declare class Question {
|
/**
|
||||||
|
* allows to specify an user interaction during runtime
|
||||||
|
*/
|
||||||
|
export declare type questionType = "input" | "confirm" | "list" | "rawlist" | "expand" | "checkbox" | "password" | "editor";
|
||||||
|
export interface choiceObject {
|
||||||
|
name: string;
|
||||||
|
value: any;
|
||||||
|
}
|
||||||
|
export interface validateFunction {
|
||||||
|
(any: any): boolean;
|
||||||
|
}
|
||||||
|
export declare class Interaction {
|
||||||
|
constructor();
|
||||||
|
askQuestion(optionsArg: {
|
||||||
|
type: questionType;
|
||||||
|
message: string;
|
||||||
|
default: any;
|
||||||
|
choices: string[] | choiceObject[];
|
||||||
|
validate: validateFunction;
|
||||||
|
}): void;
|
||||||
|
askQuestionArray: any;
|
||||||
|
}
|
||||||
|
export declare class QuestionTree {
|
||||||
|
constructor(questionString: string, optionsArray: any);
|
||||||
|
}
|
||||||
|
export declare class QuestionTreeNode {
|
||||||
|
constructor();
|
||||||
|
}
|
||||||
|
export declare class QuestionStorage {
|
||||||
constructor();
|
constructor();
|
||||||
}
|
}
|
||||||
|
17
dist/smartcli.classes.interaction.helpers.d.ts
vendored
17
dist/smartcli.classes.interaction.helpers.d.ts
vendored
@ -1,17 +0,0 @@
|
|||||||
import "typings-global";
|
|
||||||
import "./smartcli.interfaces";
|
|
||||||
/**
|
|
||||||
* 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}
|
|
||||||
*/
|
|
||||||
export declare let getAnswer: (questionString: string, cb: any) => any;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param questionString
|
|
||||||
* @param choiceOptions
|
|
||||||
* @param cb
|
|
||||||
* @returns {null}
|
|
||||||
*/
|
|
||||||
export declare let getChoice: (questionString: string, choiceOptions: string[], cb: any) => any;
|
|
54
dist/smartcli.classes.interaction.helpers.js
vendored
54
dist/smartcli.classes.interaction.helpers.js
vendored
@ -1,54 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
require("typings-global");
|
|
||||||
require("./smartcli.interfaces");
|
|
||||||
const 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
|
|
||||||
let question = {
|
|
||||||
type: "input",
|
|
||||||
name: "userFeedback",
|
|
||||||
message: questionString,
|
|
||||||
validate: function (value) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
plugins.inquirer.prompt([question], function (answers) {
|
|
||||||
let 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
|
|
||||||
let question = {
|
|
||||||
type: "list",
|
|
||||||
name: "userFeedback",
|
|
||||||
message: questionString,
|
|
||||||
choices: choiceOptions,
|
|
||||||
filter: function (val) { return val.toLowerCase(); }
|
|
||||||
};
|
|
||||||
plugins.inquirer.prompt(question, function (answers) {
|
|
||||||
let answer = answers.userFeedback;
|
|
||||||
cb(answer);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFFeEIsUUFBTyx1QkFBdUIsQ0FBQyxDQUFBO0FBQy9CLE1BQU8sT0FBTyxXQUFXLG9CQUFvQixDQUFDLENBQUM7QUFFL0M7Ozs7O0dBS0c7QUFDUSxpQkFBUyxHQUFHLFVBQVMsY0FBcUIsRUFBRSxFQUFFO0lBQ3JELEVBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBYyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCwwQ0FBMEM7SUFDMUMsSUFBSSxRQUFRLEdBQUc7UUFDWCxJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxjQUFjO1FBQ3BCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFFBQVEsRUFBRSxVQUFVLEtBQUs7WUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQ0osQ0FBQztJQUVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUMsVUFBUyxPQUFPO1FBQy9DLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDbEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDUSxpQkFBUyxHQUFHLFVBQVMsY0FBcUIsRUFBRSxhQUFzQixFQUFFLEVBQUU7SUFDN0UsRUFBRSxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxRQUFRLEdBQUc7UUFDWCxJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSxjQUFjO1FBQ3BCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLE1BQU0sRUFBRSxVQUFVLEdBQUcsSUFBSyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN4RCxDQUFDO0lBRUYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFDLFVBQVMsT0FBTztRQUM3QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBRVAsQ0FBQyxDQUFDIn0=
|
|
39
dist/smartcli.classes.interaction.js
vendored
39
dist/smartcli.classes.interaction.js
vendored
@ -1,8 +1,41 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
class Question {
|
const plugins = require("./smartcli.plugins");
|
||||||
|
class Interaction {
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
;
|
||||||
|
askQuestion(optionsArg) {
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
plugins.inquirer.prompt([{
|
||||||
|
type: optionsArg.type,
|
||||||
|
message: optionsArg.message,
|
||||||
|
default: optionsArg.default,
|
||||||
|
choices: optionsArg.choices,
|
||||||
|
validate: optionsArg.validate
|
||||||
|
}]).then(answers => {
|
||||||
|
done.resolve(answers);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
;
|
||||||
|
}
|
||||||
|
exports.Interaction = Interaction;
|
||||||
|
class QuestionTree {
|
||||||
|
constructor(questionString, optionsArray) {
|
||||||
|
}
|
||||||
|
;
|
||||||
|
}
|
||||||
|
exports.QuestionTree = QuestionTree;
|
||||||
|
;
|
||||||
|
class QuestionTreeNode {
|
||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.Question = Question;
|
exports.QuestionTreeNode = QuestionTreeNode;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuaW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUd4QjtJQUNJO0lBRUEsQ0FBQztBQUNMLENBQUM7QUFKWSxnQkFBUSxXQUlwQixDQUFBIn0=
|
;
|
||||||
|
class QuestionStorage {
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.QuestionStorage = QuestionStorage;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuaW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBZTlDO0lBQ0k7SUFDQSxDQUFDOztJQUVELFdBQVcsQ0FBQyxVQU1YO1FBQ0csSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDM0IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2dCQUMzQixPQUFPLEVBQUMsVUFBVSxDQUFDLE9BQU87Z0JBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTthQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQUVMLENBQUM7QUF2QlksbUJBQVcsY0F1QnZCLENBQUE7QUFHRDtJQUVJLFlBQVksY0FBc0IsRUFBRSxZQUFZO0lBRWhELENBQUM7O0FBQ0wsQ0FBQztBQUxZLG9CQUFZLGVBS3hCLENBQUE7QUFBQSxDQUFDO0FBRUY7SUFDSTtJQUVBLENBQUM7QUFDTCxDQUFDO0FBSlksd0JBQWdCLG1CQUk1QixDQUFBO0FBQUEsQ0FBQztBQUVGO0lBQ0k7SUFFQSxDQUFDO0FBQ0wsQ0FBQztBQUpZLHVCQUFlLGtCQUkzQixDQUFBIn0=
|
23
dist/smartcli.classes.smartcli.d.ts
vendored
23
dist/smartcli.classes.smartcli.d.ts
vendored
@ -1,6 +1,11 @@
|
|||||||
/// <reference types="q" />
|
/// <reference types="q" />
|
||||||
import "typings-global";
|
import "typings-global";
|
||||||
import * as plugins from "./smartcli.plugins";
|
import * as plugins from "./smartcli.plugins";
|
||||||
|
import { Objectmap } from "lik";
|
||||||
|
export interface commandPromiseObject {
|
||||||
|
commandName: string;
|
||||||
|
promise: plugins.q.Promise<any>;
|
||||||
|
}
|
||||||
export declare class Smartcli {
|
export declare class Smartcli {
|
||||||
argv: any;
|
argv: any;
|
||||||
questionsDone: any;
|
questionsDone: any;
|
||||||
@ -8,6 +13,7 @@ export declare class Smartcli {
|
|||||||
commands: any;
|
commands: any;
|
||||||
questions: any;
|
questions: any;
|
||||||
version: string;
|
version: string;
|
||||||
|
allCommandPromises: Objectmap<commandPromiseObject>;
|
||||||
constructor();
|
constructor();
|
||||||
/**
|
/**
|
||||||
* adds an alias, meaning one equals the other in terms of triggering associated commands
|
* adds an alias, meaning one equals the other in terms of triggering associated commands
|
||||||
@ -24,13 +30,20 @@ export declare class Smartcli {
|
|||||||
/**
|
/**
|
||||||
* gets a Promise for a command word
|
* gets a Promise for a command word
|
||||||
*/
|
*/
|
||||||
getCommandPromise(commandNameArg: any): void;
|
getCommandPromiseByName(commandNameArg: string): plugins.q.Promise<any>;
|
||||||
addQuestion(definitionArg: {
|
/**
|
||||||
questionString: string;
|
* allows to specify help text to be printed above the rest of the help text
|
||||||
questionType: string;
|
*/
|
||||||
|
addHelp(optionsArg: {
|
||||||
|
helpText: string;
|
||||||
}): void;
|
}): void;
|
||||||
addHelp(): void;
|
/**
|
||||||
|
* specify version to be printed for -v --version
|
||||||
|
*/
|
||||||
addVersion(versionArg: string): void;
|
addVersion(versionArg: string): void;
|
||||||
|
/**
|
||||||
|
* returns promise that is resolved when no commands are specified
|
||||||
|
*/
|
||||||
standardTask(): plugins.q.Promise<{}>;
|
standardTask(): plugins.q.Promise<{}>;
|
||||||
startParse(): void;
|
startParse(): void;
|
||||||
}
|
}
|
||||||
|
33
dist/smartcli.classes.smartcli.js
vendored
33
dist/smartcli.classes.smartcli.js
vendored
@ -1,8 +1,13 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
const plugins = require("./smartcli.plugins");
|
const plugins = require("./smartcli.plugins");
|
||||||
|
// import classes
|
||||||
|
const lik_1 = require("lik");
|
||||||
|
;
|
||||||
class Smartcli {
|
class Smartcli {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
// maps
|
||||||
|
this.allCommandPromises = new lik_1.Objectmap();
|
||||||
this.argv = plugins.argv;
|
this.argv = plugins.argv;
|
||||||
this.questionsDone = plugins.q.defer();
|
this.questionsDone = plugins.q.defer();
|
||||||
this.parseStarted = plugins.q.defer();
|
this.parseStarted = plugins.q.defer();
|
||||||
@ -37,14 +42,26 @@ class Smartcli {
|
|||||||
/**
|
/**
|
||||||
* gets a Promise for a command word
|
* gets a Promise for a command word
|
||||||
*/
|
*/
|
||||||
getCommandPromise(commandNameArg) {
|
getCommandPromiseByName(commandNameArg) {
|
||||||
//TODO
|
return this.allCommandPromises.find(commandPromiseObjectArg => {
|
||||||
}
|
return commandPromiseObjectArg.commandName === commandNameArg;
|
||||||
addQuestion(definitionArg) {
|
}).promise;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
addHelp() {
|
/**
|
||||||
|
* allows to specify help text to be printed above the rest of the help text
|
||||||
|
*/
|
||||||
|
addHelp(optionsArg) {
|
||||||
|
this.addCommand({
|
||||||
|
commandName: "help"
|
||||||
|
}).then(argvArg => {
|
||||||
|
plugins.beautylog.log(optionsArg.helpText);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
/**
|
||||||
|
* specify version to be printed for -v --version
|
||||||
|
*/
|
||||||
addVersion(versionArg) {
|
addVersion(versionArg) {
|
||||||
this.version = versionArg;
|
this.version = versionArg;
|
||||||
this.addAlias("v", "version");
|
this.addAlias("v", "version");
|
||||||
@ -55,6 +72,10 @@ class Smartcli {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
/**
|
||||||
|
* returns promise that is resolved when no commands are specified
|
||||||
|
*/
|
||||||
standardTask() {
|
standardTask() {
|
||||||
let done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
this.parseStarted.promise
|
this.parseStarted.promise
|
||||||
@ -75,4 +96,4 @@ class Smartcli {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.Smartcli = Smartcli;
|
exports.Smartcli = Smartcli;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5zbWFydGNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuc21hcnRjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUV4QixNQUFZLE9BQU8sV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBRzlDO0lBT0k7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDOztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE1BQU0sRUFBQyxRQUFRO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7O0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxhQUFrQztRQUN6QyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsY0FBYztRQUM1QixNQUFNO0lBQ1YsQ0FBQztJQUNELFdBQVcsQ0FBQyxhQUF5RDtJQUVyRSxDQUFDOztJQUNELE9BQU87SUFFUCxDQUFDO0lBQ0QsVUFBVSxDQUFDLFVBQWlCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUNELFlBQVk7UUFDUixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUFBLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7QUFFTCxDQUFDO0FBN0VZLGdCQUFRLFdBNkVwQixDQUFBIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5zbWFydGNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuc21hcnRjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUV4QixNQUFZLE9BQU8sV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBRzlDLGlCQUFpQjtBQUNqQixzQkFBd0IsS0FBSyxDQUFDLENBQUE7QUFNN0IsQ0FBQztBQUVGO0lBVUk7UUFGQSxPQUFPO1FBQ1AsdUJBQWtCLEdBQUcsSUFBSSxlQUFTLEVBQXdCLENBQUM7UUFFdkQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUMsQ0FBQzs7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxNQUFNLEVBQUMsUUFBUTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDOztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsYUFBa0M7UUFDekMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDcEIsSUFBSSxDQUFDO1lBQ0YsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7SUFFRDs7T0FFRztJQUNILHVCQUF1QixDQUFDLGNBQXFCO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHVCQUF1QjtZQUN2RCxNQUFNLENBQUMsdUJBQXVCLENBQUMsV0FBVyxLQUFLLGNBQWMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDZixDQUFDOztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLFVBRVA7UUFDRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ1osV0FBVyxFQUFDLE1BQU07U0FDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxVQUFpQjtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDcEIsSUFBSSxDQUFDO1lBQ0YsRUFBRSxDQUFBLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNWLENBQUM7O0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDcEIsSUFBSSxDQUFDO1lBQ0YsRUFBRSxDQUFBLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFBQSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0FBRUwsQ0FBQztBQWpHWSxnQkFBUSxXQWlHcEIsQ0FBQSJ9
|
2
dist/smartcli.plugins.d.ts
vendored
2
dist/smartcli.plugins.d.ts
vendored
@ -2,7 +2,7 @@ import "typings-global";
|
|||||||
export declare let argv: any;
|
export declare let argv: any;
|
||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export declare let cliff: any;
|
export declare let cliff: any;
|
||||||
export declare let inquirer: any;
|
export import inquirer = require("inquirer");
|
||||||
export import lik = require("lik");
|
export import lik = require("lik");
|
||||||
export declare let path: any;
|
export declare let path: any;
|
||||||
export import q = require("q");
|
export import q = require("q");
|
||||||
|
2
dist/smartcli.plugins.js
vendored
2
dist/smartcli.plugins.js
vendored
@ -8,4 +8,4 @@ exports.lik = require("lik");
|
|||||||
exports.path = require("path");
|
exports.path = require("path");
|
||||||
exports.q = require("q");
|
exports.q = require("q");
|
||||||
exports.smartparam = require("smartparam");
|
exports.smartparam = require("smartparam");
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUViLFlBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNwQyxhQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLGdCQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVCLFdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQztBQUN4QixZQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNqQixrQkFBVSxXQUFXLFlBQVksQ0FBQyxDQUFDIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUViLFlBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNwQyxhQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLGdCQUFRLFdBQVcsVUFBVSxDQUFDLENBQUM7QUFDL0IsV0FBRyxXQUFXLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLFlBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsU0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGtCQUFVLFdBQVcsWUFBWSxDQUFDLENBQUMifQ==
|
@ -28,7 +28,8 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/smartcli",
|
"homepage": "https://gitlab.com/pushrocks/smartcli",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/q": "0.0.30",
|
"@types/inquirer": "0.x.x",
|
||||||
|
"@types/q": "0.x.x",
|
||||||
"beautylog": "^5.0.20",
|
"beautylog": "^5.0.20",
|
||||||
"cliff": "^0.1.10",
|
"cliff": "^0.1.10",
|
||||||
"inquirer": "^1.1.2",
|
"inquirer": "^1.1.2",
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
import "typings-global";
|
|
||||||
|
|
||||||
import "./smartcli.interfaces";
|
|
||||||
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}
|
|
||||||
*/
|
|
||||||
export let getAnswer = function(questionString:string, cb) {
|
|
||||||
if (typeof questionString != 'string') {
|
|
||||||
plugins.beautylog.error('no question specified');
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
//make inquirer compatible question object
|
|
||||||
let question = {
|
|
||||||
type: "input",
|
|
||||||
name: "userFeedback",
|
|
||||||
message: questionString,
|
|
||||||
validate: function( value ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.inquirer.prompt([question],function(answers){
|
|
||||||
let 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
|
|
||||||
let question = {
|
|
||||||
type: "list",
|
|
||||||
name: "userFeedback",
|
|
||||||
message: questionString,
|
|
||||||
choices: choiceOptions,
|
|
||||||
filter: function( val ) { return val.toLowerCase(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.inquirer.prompt(question,function(answers){
|
|
||||||
let answer = answers.userFeedback;
|
|
||||||
cb(answer);
|
|
||||||
});
|
|
||||||
|
|
||||||
};
|
|
@ -1,7 +1,59 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
import * as plugins from "./smartcli.plugins";
|
import * as plugins from "./smartcli.plugins";
|
||||||
|
|
||||||
export class Question {
|
/**
|
||||||
|
* allows to specify an user interaction during runtime
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type questionType = "input" | "confirm" | "list" | "rawlist" | "expand" | "checkbox" | "password" | "editor"
|
||||||
|
export interface choiceObject {
|
||||||
|
name: string;
|
||||||
|
value: any
|
||||||
|
}
|
||||||
|
export interface validateFunction {
|
||||||
|
(any):boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Interaction {
|
||||||
|
constructor() {
|
||||||
|
};
|
||||||
|
|
||||||
|
askQuestion(optionsArg: {
|
||||||
|
type: questionType,
|
||||||
|
message: string
|
||||||
|
default: any
|
||||||
|
choices: string[] | choiceObject[];
|
||||||
|
validate: validateFunction
|
||||||
|
}) {
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
plugins.inquirer.prompt([{
|
||||||
|
type: optionsArg.type,
|
||||||
|
message: optionsArg.message,
|
||||||
|
default: optionsArg.default,
|
||||||
|
choices:optionsArg.choices,
|
||||||
|
validate: optionsArg.validate
|
||||||
|
}]).then(answers => {
|
||||||
|
done.resolve(answers);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
askQuestionArray
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class QuestionTree {
|
||||||
|
|
||||||
|
constructor(questionString: string, optionsArray) {
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export class QuestionTreeNode {
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export class QuestionStorage {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,16 @@
|
|||||||
import "typings-global";
|
import "typings-global";
|
||||||
|
|
||||||
import * as plugins from "./smartcli.plugins";
|
import * as plugins from "./smartcli.plugins";
|
||||||
import {Question} from "./smartcli.classes.interaction";
|
import * as interaction from "./smartcli.classes.interaction";
|
||||||
|
|
||||||
|
// import classes
|
||||||
|
import {Objectmap} from "lik";
|
||||||
|
|
||||||
|
// interfaces
|
||||||
|
export interface commandPromiseObject {
|
||||||
|
commandName:string;
|
||||||
|
promise: plugins.q.Promise<any>;
|
||||||
|
};
|
||||||
|
|
||||||
export class Smartcli {
|
export class Smartcli {
|
||||||
argv;
|
argv;
|
||||||
@ -10,6 +19,9 @@ export class Smartcli {
|
|||||||
commands;
|
commands;
|
||||||
questions;
|
questions;
|
||||||
version:string;
|
version:string;
|
||||||
|
|
||||||
|
// maps
|
||||||
|
allCommandPromises = new Objectmap<commandPromiseObject>();
|
||||||
constructor(){
|
constructor(){
|
||||||
this.argv = plugins.argv;
|
this.argv = plugins.argv;
|
||||||
this.questionsDone = plugins.q.defer();
|
this.questionsDone = plugins.q.defer();
|
||||||
@ -44,15 +56,28 @@ export class Smartcli {
|
|||||||
/**
|
/**
|
||||||
* gets a Promise for a command word
|
* gets a Promise for a command word
|
||||||
*/
|
*/
|
||||||
getCommandPromise(commandNameArg){
|
getCommandPromiseByName(commandNameArg:string){
|
||||||
//TODO
|
return this.allCommandPromises.find(commandPromiseObjectArg => {
|
||||||
}
|
return commandPromiseObjectArg.commandName === commandNameArg;
|
||||||
addQuestion(definitionArg:{questionString:string,questionType:string}){
|
}).promise;
|
||||||
|
|
||||||
};
|
};
|
||||||
addHelp(){
|
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* allows to specify help text to be printed above the rest of the help text
|
||||||
|
*/
|
||||||
|
addHelp(optionsArg:{
|
||||||
|
helpText:string
|
||||||
|
}){
|
||||||
|
this.addCommand({
|
||||||
|
commandName:"help"
|
||||||
|
}).then(argvArg => {
|
||||||
|
plugins.beautylog.log(optionsArg.helpText);
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* specify version to be printed for -v --version
|
||||||
|
*/
|
||||||
addVersion(versionArg:string){
|
addVersion(versionArg:string){
|
||||||
this.version = versionArg;
|
this.version = versionArg;
|
||||||
this.addAlias("v","version");
|
this.addAlias("v","version");
|
||||||
@ -62,7 +87,11 @@ export class Smartcli {
|
|||||||
console.log(this.version);
|
console.log(this.version);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns promise that is resolved when no commands are specified
|
||||||
|
*/
|
||||||
standardTask(){
|
standardTask(){
|
||||||
let done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
this.parseStarted.promise
|
this.parseStarted.promise
|
||||||
|
@ -3,7 +3,7 @@ import "typings-global";
|
|||||||
export let argv = require('yargs');
|
export let argv = require('yargs');
|
||||||
export import beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export let cliff = require("cliff");
|
export let cliff = require("cliff");
|
||||||
export let inquirer = require("inquirer");
|
export import inquirer = require("inquirer");
|
||||||
export import lik = require("lik");
|
export import lik = require("lik");
|
||||||
export let path = require("path");
|
export let path = require("path");
|
||||||
export import q = require("q");
|
export import q = require("q");
|
||||||
|
Loading…
Reference in New Issue
Block a user