diff --git a/.koding.yml b/.koding.yml deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index 3875272..f6c8b01 100644 --- a/README.md +++ b/README.md @@ -43,5 +43,8 @@ mySmartcli.standardTask() // do something if program is called without an command }); -mySmartcli.question +mySmartcli.addCommand({commandname: 'install'}) + .then(argvArg => { + // do something if program is called with command "install" + }) ``` \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 43d2399..4781bb3 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,2 +1 @@ -import "typings-global"; -export { Smartcli } from "./smartcli.classes.smartcli"; +export { Smartcli } from './smartcli.classes.smartcli'; diff --git a/dist/index.js b/dist/index.js index 8dc8ec3..6e87514 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,5 +1,4 @@ "use strict"; -require("typings-global"); var smartcli_classes_smartcli_1 = require("./smartcli.classes.smartcli"); exports.Smartcli = smartcli_classes_smartcli_1.Smartcli; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBR3hCLDBDQUF1Qiw2QkFBNkIsQ0FBQztBQUE3Qyx3REFBNkMifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUVBQXNEO0FBQTdDLCtDQUFBLFFBQVEsQ0FBQSJ9 \ No newline at end of file diff --git a/dist/smartcli.classes.interaction.d.ts b/dist/smartcli.classes.interaction.d.ts index 0ff9203..1b4e633 100644 --- a/dist/smartcli.classes.interaction.d.ts +++ b/dist/smartcli.classes.interaction.d.ts @@ -1,13 +1,12 @@ -import "typings-global"; /** * allows to specify an user interaction during runtime */ -export declare type questionType = "input" | "confirm" | "list" | "rawlist" | "expand" | "checkbox" | "password" | "editor"; -export interface choiceObject { +export declare type questionType = 'input' | 'confirm' | 'list' | 'rawlist' | 'expand' | 'checkbox' | 'password' | 'editor'; +export interface IChoiceObject { name: string; value: any; } -export interface validateFunction { +export interface IValidateFunction { (any: any): boolean; } export declare class Interaction { @@ -16,8 +15,8 @@ export declare class Interaction { type: questionType; message: string; default: any; - choices: string[] | choiceObject[]; - validate: validateFunction; + choices: string[] | IChoiceObject[]; + validate: IValidateFunction; }): void; askQuestionArray: any; } diff --git a/dist/smartcli.classes.interaction.js b/dist/smartcli.classes.interaction.js index 1ea2612..f28300b 100644 --- a/dist/smartcli.classes.interaction.js +++ b/dist/smartcli.classes.interaction.js @@ -1,10 +1,8 @@ "use strict"; -require("typings-global"); const plugins = require("./smartcli.plugins"); class Interaction { constructor() { } - ; askQuestion(optionsArg) { let done = plugins.q.defer(); plugins.inquirer.prompt([{ @@ -17,25 +15,21 @@ class Interaction { done.resolve(answers); }); } - ; } exports.Interaction = Interaction; class QuestionTree { constructor(questionString, optionsArray) { } - ; } exports.QuestionTree = QuestionTree; -; class QuestionTreeNode { constructor() { } } exports.QuestionTreeNode = QuestionTreeNode; -; class QuestionStorage { constructor() { } } exports.QuestionStorage = QuestionStorage; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuaW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBZTlDO0lBQ0k7SUFDQSxDQUFDOztJQUVELFdBQVcsQ0FBQyxVQU1YO1FBQ0csSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDM0IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2dCQUMzQixPQUFPLEVBQUMsVUFBVSxDQUFDLE9BQU87Z0JBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTthQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQUVMLENBQUM7QUF2QlksbUJBQVcsY0F1QnZCLENBQUE7QUFHRDtJQUVJLFlBQVksY0FBc0IsRUFBRSxZQUFZO0lBRWhELENBQUM7O0FBQ0wsQ0FBQztBQUxZLG9CQUFZLGVBS3hCLENBQUE7QUFBQSxDQUFDO0FBRUY7SUFDSTtJQUVBLENBQUM7QUFDTCxDQUFDO0FBSlksd0JBQWdCLG1CQUk1QixDQUFBO0FBQUEsQ0FBQztBQUVGO0lBQ0k7SUFFQSxDQUFDO0FBQ0wsQ0FBQztBQUpZLHVCQUFlLGtCQUkzQixDQUFBIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuaW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhDQUE2QztBQWU3QztJQUNJO0lBQ0EsQ0FBQztJQUVELFdBQVcsQ0FBQyxVQU1YO1FBQ0csSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDM0IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2dCQUMzQixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87Z0JBQzNCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTthQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDekIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0NBRUo7QUF2QkQsa0NBdUJDO0FBR0Q7SUFFSSxZQUFZLGNBQXNCLEVBQUUsWUFBWTtJQUVoRCxDQUFDO0NBQ0o7QUFMRCxvQ0FLQztBQUVEO0lBQ0k7SUFFQSxDQUFDO0NBQ0o7QUFKRCw0Q0FJQztBQUVEO0lBQ0k7SUFFQSxDQUFDO0NBQ0o7QUFKRCwwQ0FJQyJ9 \ No newline at end of file diff --git a/dist/smartcli.classes.smartcli.d.ts b/dist/smartcli.classes.smartcli.d.ts index 68bacf3..ea11690 100644 --- a/dist/smartcli.classes.smartcli.d.ts +++ b/dist/smartcli.classes.smartcli.d.ts @@ -1,10 +1,9 @@ /// -import "typings-global"; -import * as plugins from "./smartcli.plugins"; -import { Objectmap } from "lik"; -export interface commandPromiseObject { +import * as q from 'q'; +import { Objectmap } from 'lik'; +export interface ICommandPromiseObject { commandName: string; - promise: plugins.q.Promise; + promise: q.Promise; } export declare class Smartcli { argv: any; @@ -13,7 +12,7 @@ export declare class Smartcli { commands: any; questions: any; version: string; - allCommandPromises: Objectmap; + allCommandPromises: Objectmap; constructor(); /** * adds an alias, meaning one equals the other in terms of triggering associated commands @@ -21,16 +20,15 @@ export declare class Smartcli { addAlias(keyArg: any, aliasArg: any): void; /** * adds a Command by returning a Promise that reacts to the specific commandString given. - * * Note: in e.g. "npm install something" the "install" is considered the command. */ addCommand(definitionArg: { commandName: string; - }): plugins.q.Promise; + }): q.Promise; /** * gets a Promise for a command word */ - getCommandPromiseByName(commandNameArg: string): plugins.q.Promise; + getCommandPromiseByName(commandNameArg: string): q.Promise; /** * allows to specify help text to be printed above the rest of the help text */ @@ -44,7 +42,7 @@ export declare class Smartcli { /** * returns promise that is resolved when no commands are specified */ - standardTask(): plugins.q.Promise; + standardTask(): q.Promise; /** * start the process of evaluating commands */ diff --git a/dist/smartcli.classes.smartcli.js b/dist/smartcli.classes.smartcli.js index 1f8ef52..01ab313 100644 --- a/dist/smartcli.classes.smartcli.js +++ b/dist/smartcli.classes.smartcli.js @@ -1,18 +1,16 @@ "use strict"; -require("typings-global"); +const q = require("q"); const plugins = require("./smartcli.plugins"); // import classes const lik_1 = require("lik"); -; class Smartcli { constructor() { // maps this.allCommandPromises = new lik_1.Objectmap(); this.argv = plugins.yargs; - this.questionsDone = plugins.q.defer(); - this.parseStarted = plugins.q.defer(); + this.questionsDone = q.defer(); + this.parseStarted = q.defer(); } - ; /** * adds an alias, meaning one equals the other in terms of triggering associated commands */ @@ -20,17 +18,15 @@ class Smartcli { this.argv = this.argv.alias(keyArg, aliasArg); return; } - ; /** * adds a Command by returning a Promise that reacts to the specific commandString given. - * * Note: in e.g. "npm install something" the "install" is considered the command. */ addCommand(definitionArg) { - let done = plugins.q.defer(); + let done = q.defer(); this.parseStarted.promise .then(() => { - if (this.argv._.indexOf(definitionArg.commandName) == 0) { + if (this.argv._.indexOf(definitionArg.commandName) === 0) { done.resolve(this.argv); } else { @@ -39,7 +35,6 @@ class Smartcli { }); return done.promise; } - ; /** * gets a Promise for a command word */ @@ -48,24 +43,22 @@ class Smartcli { return commandPromiseObjectArg.commandName === commandNameArg; }).promise; } - ; /** * allows to specify help text to be printed above the rest of the help text */ addHelp(optionsArg) { this.addCommand({ - commandName: "help" + commandName: 'help' }).then(argvArg => { plugins.beautylog.log(optionsArg.helpText); }); } - ; /** * specify version to be printed for -v --version */ addVersion(versionArg) { this.version = versionArg; - this.addAlias("v", "version"); + this.addAlias('v', 'version'); this.parseStarted.promise .then(() => { if (this.argv.v) { @@ -73,21 +66,19 @@ class Smartcli { } }); } - ; /** * returns promise that is resolved when no commands are specified */ standardTask() { - let done = plugins.q.defer(); + let done = q.defer(); this.parseStarted.promise .then(() => { - if (this.argv._.length == 0 && !this.argv.v) { + if (this.argv._.length === 0 && !this.argv.v) { done.resolve(this.argv); } else { done.reject(this.argv); } - ; }); return done.promise; } @@ -101,4 +92,4 @@ class Smartcli { } } exports.Smartcli = Smartcli; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5zbWFydGNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuc21hcnRjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUV4QixNQUFZLE9BQU8sV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBRzlDLGlCQUFpQjtBQUNqQixzQkFBd0IsS0FBSyxDQUFDLENBQUE7QUFNN0IsQ0FBQztBQUVGO0lBVUk7UUFGQSxPQUFPO1FBQ1AsdUJBQWtCLEdBQUcsSUFBSSxlQUFTLEVBQXdCLENBQUM7UUFFdkQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUMsQ0FBQzs7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxNQUFNLEVBQUMsUUFBUTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUM7SUFDWCxDQUFDOztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsYUFBa0M7UUFDekMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDcEIsSUFBSSxDQUFDO1lBQ0YsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5zbWFydGNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuc21hcnRjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVCQUFzQjtBQUV0Qiw4Q0FBNkM7QUFHN0MsaUJBQWlCO0FBQ2pCLDZCQUE2QjtBQVE3QjtJQVVJO1FBRkEsT0FBTztRQUNQLHVCQUFrQixHQUFHLElBQUksZUFBUyxFQUF5QixDQUFBO1FBRXZELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsTUFBTSxFQUFDLFFBQVE7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUMsUUFBUSxDQUFDLENBQUE7UUFDNUMsTUFBTSxDQUFBO0lBQ1YsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxhQUFvQztRQUMzQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFPLENBQUE7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO2FBQ3BCLElBQUksQ0FBQztZQUNGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDM0IsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzFCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QixDQUFDLGNBQXNCO1FBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHVCQUF1QjtZQUN2RCxNQUFNLENBQUMsdUJBQXVCLENBQUMsV0FBVyxLQUFLLGNBQWMsQ0FBQTtRQUNqRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsVUFFUDtRQUNHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDWixXQUFXLEVBQUUsTUFBTTtTQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDWCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDOUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsVUFBa0I7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsU0FBUyxDQUFDLENBQUE7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO2FBQ3BCLElBQUksQ0FBQztZQUNGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM3QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBTyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMzQixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDMUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMzQixNQUFNLENBQUE7SUFDVixDQUFDO0NBRUo7QUF0R0QsNEJBc0dDIn0= \ No newline at end of file diff --git a/dist/smartcli.plugins.d.ts b/dist/smartcli.plugins.d.ts index 402a949..38caa44 100644 --- a/dist/smartcli.plugins.d.ts +++ b/dist/smartcli.plugins.d.ts @@ -1,9 +1,8 @@ -import "typings-global"; -export import yargs = require('yargs'); -export import beautylog = require("beautylog"); -export import cliff = require("cliff"); -export import inquirer = require("inquirer"); -export import lik = require("lik"); -export import path = require("path"); -export import q = require("q"); -export import smartparam = require("smartparam"); +import 'typings-global'; +import * as yargs from 'yargs'; +import * as beautylog from 'beautylog'; +import * as inquirer from 'inquirer'; +import * as lik from 'lik'; +import * as path from 'path'; +import * as smartparam from 'smartparam'; +export { yargs, beautylog, cliff, inquirer, lik, path, smartparam }; diff --git a/dist/smartcli.plugins.js b/dist/smartcli.plugins.js index 3225159..da615ac 100644 --- a/dist/smartcli.plugins.js +++ b/dist/smartcli.plugins.js @@ -1,11 +1,15 @@ "use strict"; require("typings-global"); -exports.yargs = require('yargs'); -exports.beautylog = require("beautylog"); -exports.cliff = require("cliff"); -exports.inquirer = require("inquirer"); -exports.lik = require("lik"); -exports.path = require("path"); -exports.q = require("q"); -exports.smartparam = require("smartparam"); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUVWLGFBQUssV0FBVyxPQUFPLENBQUMsQ0FBQztBQUN6QixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGFBQUssV0FBVyxPQUFPLENBQUMsQ0FBQztBQUN6QixnQkFBUSxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLFdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQztBQUNyQixZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDdkIsU0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGtCQUFVLFdBQVcsWUFBWSxDQUFDLENBQUMifQ== \ No newline at end of file +const yargs = require("yargs"); +exports.yargs = yargs; +const beautylog = require("beautylog"); +exports.beautylog = beautylog; +const inquirer = require("inquirer"); +exports.inquirer = inquirer; +const lik = require("lik"); +exports.lik = lik; +const path = require("path"); +exports.path = path; +const smartparam = require("smartparam"); +exports.smartparam = smartparam; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUF3QjtBQUV4QiwrQkFBOEI7QUFRMUIsZ0JBUlEsS0FBSyxDQVFSO0FBUFQsdUNBQXNDO0FBUWxDLG9CQVJRLFNBQVMsQ0FRUjtBQVBiLHFDQUFvQztBQVNoQyxtQkFUUSxRQUFRLENBU1I7QUFSWiwyQkFBMEI7QUFTdEIsY0FUUSxHQUFHLENBU1I7QUFSUCw2QkFBNEI7QUFTeEIsZUFUUSxJQUFJLENBU1I7QUFSUix5Q0FBd0M7QUFTcEMscUJBVFEsVUFBVSxDQVNSIn0= \ No newline at end of file diff --git a/package.json b/package.json index 436d310..2d75f85 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,10 @@ }, "homepage": "https://gitlab.com/pushrocks/smartcli", "dependencies": { - "@types/cliff": "^0.1.3", "@types/inquirer": "0.x.x", "@types/q": "0.x.x", "@types/yargs": "0.x.x", "beautylog": "^5.0.20", - "cliff": "^0.1.10", "inquirer": "^1.1.2", "lik": "^1.0.15", "q": "^1.4.1", diff --git a/test/test.js b/test/test.js index a16c936..4cef39a 100644 --- a/test/test.js +++ b/test/test.js @@ -33,4 +33,4 @@ describe("smartcli.Smartcli class", function () { }); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFFdEIsTUFBTyxRQUFRLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFDM0MsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUvQixRQUFRLENBQUMseUJBQXlCLEVBQUM7SUFDL0IsSUFBSSxrQkFBb0MsQ0FBQztJQUN6QyxRQUFRLENBQUMsZ0JBQWdCLEVBQUM7UUFDdEIsRUFBRSxDQUFDLDhCQUE4QixFQUFDO1lBQzlCLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGFBQWEsRUFBQztRQUNuQixFQUFFLENBQUMsdUJBQXVCLEVBQUM7WUFDdkIsa0JBQWtCLENBQUMsVUFBVSxDQUFDO2dCQUMxQixXQUFXLEVBQUMsU0FBUzthQUN4QixDQUFDLENBQUM7UUFFUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGVBQWUsRUFBQztRQUNyQixFQUFFLENBQUMscUNBQXFDLEVBQUMsVUFBUyxJQUFJO1lBQ2xELGtCQUFrQixDQUFDLFlBQVksRUFBRTtpQkFDNUIsSUFBSSxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUNGLFFBQVEsQ0FBQyxhQUFhLEVBQUM7UUFDbkIsRUFBRSxDQUFDLG9DQUFvQyxFQUFDO1lBQ3BDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFzQjtBQUV0QiwwQ0FBMkM7QUFDM0MsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUvQixRQUFRLENBQUMseUJBQXlCLEVBQUM7SUFDL0IsSUFBSSxrQkFBb0MsQ0FBQztJQUN6QyxRQUFRLENBQUMsZ0JBQWdCLEVBQUM7UUFDdEIsRUFBRSxDQUFDLDhCQUE4QixFQUFDO1lBQzlCLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGFBQWEsRUFBQztRQUNuQixFQUFFLENBQUMsdUJBQXVCLEVBQUM7WUFDdkIsa0JBQWtCLENBQUMsVUFBVSxDQUFDO2dCQUMxQixXQUFXLEVBQUMsU0FBUzthQUN4QixDQUFDLENBQUM7UUFFUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGVBQWUsRUFBQztRQUNyQixFQUFFLENBQUMscUNBQXFDLEVBQUMsVUFBUyxJQUFJO1lBQ2xELGtCQUFrQixDQUFDLFlBQVksRUFBRTtpQkFDNUIsSUFBSSxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUNGLFFBQVEsQ0FBQyxhQUFhLEVBQUM7UUFDbkIsRUFBRSxDQUFDLG9DQUFvQyxFQUFDO1lBQ3BDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/ts/index.ts b/ts/index.ts index 351c05f..9e1583e 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,4 +1 @@ -import "typings-global"; - -import {Smartcli} from "./smartcli.classes.smartcli"; -export {Smartcli} from "./smartcli.classes.smartcli"; +export { Smartcli } from './smartcli.classes.smartcli' diff --git a/ts/smartcli.classes.interaction.ts b/ts/smartcli.classes.interaction.ts index 63aac46..7a56426 100644 --- a/ts/smartcli.classes.interaction.ts +++ b/ts/smartcli.classes.interaction.ts @@ -1,41 +1,40 @@ -import "typings-global"; -import * as plugins from "./smartcli.plugins"; +import * as plugins from './smartcli.plugins' /** * allows to specify an user interaction during runtime */ -export type questionType = "input" | "confirm" | "list" | "rawlist" | "expand" | "checkbox" | "password" | "editor" -export interface choiceObject { - name: string; +export type questionType = 'input' | 'confirm' | 'list' | 'rawlist' | 'expand' | 'checkbox' | 'password' | 'editor' +export interface IChoiceObject { + name: string value: any } -export interface validateFunction { - (any):boolean +export interface IValidateFunction { + (any): boolean } export class Interaction { constructor() { - }; + } askQuestion(optionsArg: { type: questionType, message: string default: any - choices: string[] | choiceObject[]; - validate: validateFunction + choices: string[] | IChoiceObject[] + validate: IValidateFunction }) { - let done = plugins.q.defer(); + let done = plugins.q.defer() plugins.inquirer.prompt([{ type: optionsArg.type, message: optionsArg.message, default: optionsArg.default, - choices:optionsArg.choices, + choices: optionsArg.choices, validate: optionsArg.validate }]).then(answers => { - done.resolve(answers); - }); - }; + done.resolve(answers) + }) + } askQuestionArray } @@ -44,17 +43,17 @@ export class QuestionTree { constructor(questionString: string, optionsArray) { - }; -}; + } +} export class QuestionTreeNode { constructor() { } -}; +} export class QuestionStorage { constructor() { } -} \ No newline at end of file +} diff --git a/ts/smartcli.classes.smartcli.ts b/ts/smartcli.classes.smartcli.ts index d53af38..8ad8af6 100644 --- a/ts/smartcli.classes.smartcli.ts +++ b/ts/smartcli.classes.smartcli.ts @@ -1,118 +1,117 @@ -import "typings-global"; +import * as q from 'q' -import * as plugins from "./smartcli.plugins"; -import * as interaction from "./smartcli.classes.interaction"; +import * as plugins from './smartcli.plugins' +import * as interaction from './smartcli.classes.interaction' // import classes -import {Objectmap} from "lik"; +import {Objectmap} from 'lik' // interfaces -export interface commandPromiseObject { - commandName:string; - promise: plugins.q.Promise; -}; +export interface ICommandPromiseObject { + commandName: string + promise: q.Promise +} export class Smartcli { - argv:any; - questionsDone; - parseStarted; - commands; - questions; - version:string; + argv: any + questionsDone + parseStarted + commands + questions + version: string // maps - allCommandPromises = new Objectmap(); - constructor(){ - this.argv = plugins.yargs; - this.questionsDone = plugins.q.defer(); - this.parseStarted = plugins.q.defer(); - }; + allCommandPromises = new Objectmap() + constructor() { + this.argv = plugins.yargs + this.questionsDone = q.defer() + this.parseStarted = q.defer() + } /** * adds an alias, meaning one equals the other in terms of triggering associated commands */ - addAlias(keyArg,aliasArg):void { - this.argv = this.argv.alias(keyArg,aliasArg); - return; - }; + addAlias(keyArg,aliasArg): void { + this.argv = this.argv.alias(keyArg,aliasArg) + return + } /** * adds a Command by returning a Promise that reacts to the specific commandString given. - * * Note: in e.g. "npm install something" the "install" is considered the command. */ - addCommand(definitionArg:{commandName:string}):plugins.q.Promise{ - let done = plugins.q.defer(); + addCommand(definitionArg: {commandName: string}): q.Promise { + let done = q.defer() this.parseStarted.promise .then(() => { - if (this.argv._.indexOf(definitionArg.commandName) == 0) { - done.resolve(this.argv); + if (this.argv._.indexOf(definitionArg.commandName) === 0) { + done.resolve(this.argv) } else { - done.reject(this.argv); + done.reject(this.argv) } - }); - return done.promise; - }; + }) + return done.promise + } /** * gets a Promise for a command word */ - getCommandPromiseByName(commandNameArg:string){ + getCommandPromiseByName(commandNameArg: string) { return this.allCommandPromises.find(commandPromiseObjectArg => { - return commandPromiseObjectArg.commandName === commandNameArg; - }).promise; - }; + return commandPromiseObjectArg.commandName === commandNameArg + }).promise + } /** * allows to specify help text to be printed above the rest of the help text */ - addHelp(optionsArg:{ - helpText:string - }){ + addHelp(optionsArg: { + helpText: string + }) { this.addCommand({ - commandName:"help" + commandName: 'help' }).then(argvArg => { - plugins.beautylog.log(optionsArg.helpText); + plugins.beautylog.log(optionsArg.helpText) }) - }; + } /** * specify version to be printed for -v --version */ - addVersion(versionArg:string){ - this.version = versionArg; - this.addAlias("v","version"); + addVersion(versionArg: string) { + this.version = versionArg + this.addAlias('v','version') this.parseStarted.promise .then(() => { - if(this.argv.v){ - console.log(this.version); + if (this.argv.v) { + console.log(this.version) } }) - }; + } /** * returns promise that is resolved when no commands are specified */ - standardTask():plugins.q.Promise{ - let done = plugins.q.defer(); + standardTask(): q.Promise { + let done = q.defer() this.parseStarted.promise .then(() => { - if(this.argv._.length == 0 && !this.argv.v){ - done.resolve(this.argv); + if (this.argv._.length === 0 && !this.argv.v) { + done.resolve(this.argv) } else { - done.reject(this.argv); - }; - }); - return done.promise; + done.reject(this.argv) + } + }) + return done.promise } /** * start the process of evaluating commands */ - startParse():void{ - this.argv = this.argv.argv; - this.parseStarted.resolve(); - return; + startParse(): void { + this.argv = this.argv.argv + this.parseStarted.resolve() + return } -} \ No newline at end of file +} diff --git a/ts/smartcli.plugins.ts b/ts/smartcli.plugins.ts index 7264b84..3091fa0 100644 --- a/ts/smartcli.plugins.ts +++ b/ts/smartcli.plugins.ts @@ -1,10 +1,18 @@ -import "typings-global"; +import 'typings-global'; -export import yargs = require('yargs'); -export import beautylog = require("beautylog"); -export import cliff = require("cliff"); -export import inquirer = require("inquirer"); -export import lik = require("lik"); -export import path = require("path"); -export import q = require("q"); -export import smartparam = require("smartparam"); \ No newline at end of file +import * as yargs from 'yargs' +import * as beautylog from 'beautylog' +import * as inquirer from 'inquirer' +import * as lik from 'lik' +import * as path from 'path' +import * as smartparam from 'smartparam' + +export { + yargs, + beautylog, + cliff, + inquirer, + lik, + path, + smartparam +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..45052ad --- /dev/null +++ b/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "tslint-config-standard" +}