Compare commits
30 Commits
Author | SHA1 | Date | |
---|---|---|---|
9e5fb7a13a | |||
c115d222c0 | |||
643514c64a | |||
19498f7b11 | |||
3afadd9045 | |||
0889423a24 | |||
86b4cf4cc3 | |||
4cb4eabef4 | |||
bad0971f1c | |||
016f03bd8a | |||
63a9da11be | |||
ab18c75b28 | |||
088d4ef11b | |||
5ee866d9c6 | |||
d65061aaaa | |||
506bb0cdaf | |||
834a6c2953 | |||
e1c2de8a40 | |||
9e76f2afb1 | |||
cf78839e12 | |||
8733a601b4 | |||
fdd1761333 | |||
542c77069f | |||
96d82c3a20 | |||
ab8ce876a3 | |||
de4d3bcf3a | |||
75ab5552e1 | |||
eb3d9d722f | |||
c32f41cc23 | |||
cf03c6681b |
37
.gitlab-ci.yml
Normal file
37
.gitlab-ci.yml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
image: hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- test
|
||||||
|
- release
|
||||||
|
|
||||||
|
testLEGACY:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci test legacy
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
testLTS:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci test lts
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
testSTABLE:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci test stable
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
release:
|
||||||
|
stage: release
|
||||||
|
script:
|
||||||
|
- npmci publish
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
17
.travis.yml
17
.travis.yml
@ -1,17 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- "4.2.2"
|
|
||||||
before_install:
|
|
||||||
- npm install -g tsd
|
|
||||||
deploy:
|
|
||||||
provider: npm
|
|
||||||
email: npm@smart-coordination.com
|
|
||||||
api_key:
|
|
||||||
secure: XAtA2XHAr96ILKpm1VnB/Nff9hiQv3FUa/NDfGZgvJKimuF/TwU2+kXyAag/LlEQGckZ9/IDx0PTIe8x4wOvg2VyKceYktGt6G5/MHeAXwzkkM253k2CKweVtBgnpZ2doTZXeeV/h7hHuEWZbWRXIVCgM6/inaaNe4cMRGCWqwb1xmw6D8VkLpNo6PiB37gR4GfMokasgVHZEVMg2evWKk0moREGW9XKqoE6PS9TPHPHerdqFqfbmeOq3nNgHrJZkNsAJ3PPESWCe/NGEBwtYDKrPI3QlouvXmxScI9/p2VCQmdFoUxKMDsVzBdRMrCx+XxoS8x81HxubZSpnvzUlzGtznZi7e6OyAlI7xXELIO551AH4V/pNWWUPATX+7vXVDGh7aAZYme/fejisjO5Tk9aqRvohh2jCDml3ED6alHHfI0oX5UvBpOE+XwGTIJ8qpf9RrLP5DC27JWE3fqY/WoqIZX7phoKeKYLl+R7Iln/dfvepbMBgcesnBf4PuMh3Qm2l2G1bElJ/hniV1dgggwjcg50nA0Ee9sCnORPxxjdDIMwJw//NJSe+Aq5Fm1ure9oNiBYOeF0bLVQyfGIC8J8coy1xdqv2klKnGHjMMN44bjNlmDp00SaRpbdDuavyocosQVpzfA+hY2QtGV5TXFv6TLgcMYwf8gNyVNkSGE=
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
repo: pushrocks/smartcli
|
|
||||||
notifications:
|
|
||||||
slack:
|
|
||||||
secure: f5Uss0z9RPl/QcA/DroB8loyE93aOYI6bqCkrsiUscmZtlv/TVQtT4dxqGA6uvcG6iTQDBi3Ul88dQxWkRm4IqbhY35/iMaV2dHW4FVYMAh8GQMbsfL2sALCcufxD9blw47awv3iFcwhV1EeyesscjgL0JIjduk96v/7G/6QIO2838M1lzlgtj+kRUkim8qkaEs1je3gRrhMUIjLuAdscMXyUKYFMjWo9ACSjVUl30R/ZNemb18itIja6i92GotreBgcfEMczvy58ovDC7xdJUsY8LjMI01DwY+WPRnI0tAhsuI8moBwwcdM4e3bAjKjucQRjO33O5bMWRZ6QCiYd0DnCEFyCPQLJ4GSy/tkD00n8ijLHAOSV3AH1zNbdK1EAdSPQXDvlI36KJn/2hyQLoitGHVUPr76ujJWP82ypO2tgIp3XQU0dJVCxDuHnwJO2+hjdI+gCPqxNTpjeujHx3UdkTGNRjuuf9dlZ/D08fApjYxy2fxItTqo3QjP/nrqvBXUOPP8yPHpjIT4H2t5Pr4SJjBGI6X4qhKyFj6s9rA/Xu1rL+45zu1C3uC3z+u3T9UwrbzJ/cZM6r6UQvQmUvIfBNaMlg4I/diQCDIPL+Rhop2nylY3IcHmJnk2itn7kOqj1tohCpFEml5pRuSZy4udWywkdtyBAsHWFLF7oiQ=
|
|
||||||
email: false
|
|
28
README.md
28
README.md
@ -1,5 +1,5 @@
|
|||||||
# smartcli
|
# smartcli
|
||||||
nodejs wrapper for CLI related tasks
|
nodejs wrapper for CLI related tasks. TypeScript ready.
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
[](https://travis-ci.org/pushrocks/smartcli)
|
[](https://travis-ci.org/pushrocks/smartcli)
|
||||||
@ -36,21 +36,19 @@ mytool function argument1 argument2 --option1 option1Value --option2 option2Valu
|
|||||||
* async interaction functions
|
* async interaction functions
|
||||||
* are grouped in **smartcli.interaction** object
|
* are grouped in **smartcli.interaction** object
|
||||||
|
|
||||||
```js
|
|
||||||
var smartcli = require("smartcli");
|
### Methods
|
||||||
|
The examples are written in TypeScript
|
||||||
|
```typescript
|
||||||
|
import * as smartcli from "smartcli"
|
||||||
|
|
||||||
/* -------------- Check Functions -------------------*/
|
/* -------------- Check Functions -------------------*/
|
||||||
//returns true for terminal command "node myjs.js jazz"
|
smartcli.check.command("jazz"); // check for a special command.
|
||||||
smartcli.check.command('jazz');
|
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
|
||||||
* returns an object for terminal command "node myjs.js --myoption something" like so
|
smartcli.check.option("someoption") // checks for a specific option
|
||||||
* {
|
smartcli.check.optionPresence() // checks if any option is specified
|
||||||
* name: 'myoption',
|
smartcli.get.option('myoption'); //
|
||||||
* specified: true,
|
|
||||||
* value: 'something'
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
smartcli.get.option('myoption');
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
2
dist/index.d.ts
vendored
Normal file
2
dist/index.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import "typings-global";
|
||||||
|
export { Smartcli } from "./smartcli.classes.smartcli";
|
30
dist/index.js
vendored
30
dist/index.js
vendored
@ -1,27 +1,5 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
|
||||||
/// <reference path="./smartcli.interfaces.ts" />
|
|
||||||
"use strict";
|
"use strict";
|
||||||
var plugins = require("./smartcli.plugins");
|
require("typings-global");
|
||||||
var SmartcliChecks = require("./smartcli.checks");
|
var smartcli_classes_smartcli_1 = require("./smartcli.classes.smartcli");
|
||||||
var SmartcliGetters = require("./smartcli.getters");
|
exports.Smartcli = smartcli_classes_smartcli_1.Smartcli;
|
||||||
var SmartcliInteractions = require("./smartcli.interaction");
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBR3hCLDBDQUF1Qiw2QkFBNkIsQ0FBQztBQUE3Qyx3REFBNkMifQ==
|
||||||
/* ------------------------------------------------ *
|
|
||||||
* ---------- 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
62
dist/smartcli.checks.js
vendored
@ -1,62 +0,0 @@
|
|||||||
/// <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=
|
|
4
dist/smartcli.classes.interaction.d.ts
vendored
Normal file
4
dist/smartcli.classes.interaction.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import "typings-global";
|
||||||
|
export declare class Question {
|
||||||
|
constructor();
|
||||||
|
}
|
17
dist/smartcli.classes.interaction.helpers.d.ts
vendored
Normal file
17
dist/smartcli.classes.interaction.helpers.d.ts
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
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
Normal file
54
dist/smartcli.classes.interaction.helpers.js
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
"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=
|
8
dist/smartcli.classes.interaction.js
vendored
Normal file
8
dist/smartcli.classes.interaction.js
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
"use strict";
|
||||||
|
require("typings-global");
|
||||||
|
class Question {
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Question = Question;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuaW50ZXJhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUd4QjtJQUNJO0lBRUEsQ0FBQztBQUNMLENBQUM7QUFKWSxnQkFBUSxXQUlwQixDQUFBIn0=
|
36
dist/smartcli.classes.smartcli.d.ts
vendored
Normal file
36
dist/smartcli.classes.smartcli.d.ts
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/// <reference types="q" />
|
||||||
|
import "typings-global";
|
||||||
|
import * as plugins from "./smartcli.plugins";
|
||||||
|
export declare class Smartcli {
|
||||||
|
argv: any;
|
||||||
|
questionsDone: any;
|
||||||
|
parseStarted: any;
|
||||||
|
commands: any;
|
||||||
|
questions: any;
|
||||||
|
version: string;
|
||||||
|
constructor();
|
||||||
|
/**
|
||||||
|
* adds an alias, meaning one equals the other in terms of triggering associated commands
|
||||||
|
*/
|
||||||
|
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<{}>;
|
||||||
|
/**
|
||||||
|
* gets a Promise for a command word
|
||||||
|
*/
|
||||||
|
getCommandPromise(commandNameArg: any): void;
|
||||||
|
addQuestion(definitionArg: {
|
||||||
|
questionString: string;
|
||||||
|
questionType: string;
|
||||||
|
}): void;
|
||||||
|
addHelp(): void;
|
||||||
|
addVersion(versionArg: string): void;
|
||||||
|
standardTask(): plugins.q.Promise<{}>;
|
||||||
|
startParse(): void;
|
||||||
|
}
|
78
dist/smartcli.classes.smartcli.js
vendored
Normal file
78
dist/smartcli.classes.smartcli.js
vendored
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
"use strict";
|
||||||
|
require("typings-global");
|
||||||
|
const plugins = require("./smartcli.plugins");
|
||||||
|
class Smartcli {
|
||||||
|
constructor() {
|
||||||
|
this.argv = plugins.argv;
|
||||||
|
this.questionsDone = plugins.q.defer();
|
||||||
|
this.parseStarted = plugins.q.defer();
|
||||||
|
}
|
||||||
|
;
|
||||||
|
/**
|
||||||
|
* adds an alias, meaning one equals the other in terms of triggering associated commands
|
||||||
|
*/
|
||||||
|
addAlias(keyArg, aliasArg) {
|
||||||
|
this.argv = this.argv.alias(keyArg, aliasArg);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
/**
|
||||||
|
* 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();
|
||||||
|
this.parseStarted.promise
|
||||||
|
.then(() => {
|
||||||
|
if (this.argv._.indexOf(definitionArg.commandName) == 0) {
|
||||||
|
done.resolve(this.argv);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
done.reject(this.argv);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
/**
|
||||||
|
* gets a Promise for a command word
|
||||||
|
*/
|
||||||
|
getCommandPromise(commandNameArg) {
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
addQuestion(definitionArg) {
|
||||||
|
}
|
||||||
|
;
|
||||||
|
addHelp() {
|
||||||
|
}
|
||||||
|
addVersion(versionArg) {
|
||||||
|
this.version = versionArg;
|
||||||
|
this.addAlias("v", "version");
|
||||||
|
this.parseStarted.promise
|
||||||
|
.then(() => {
|
||||||
|
if (this.argv.v) {
|
||||||
|
console.log(this.version);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
standardTask() {
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
this.parseStarted.promise
|
||||||
|
.then(() => {
|
||||||
|
if (this.argv._.length == 0 && !this.argv.v) {
|
||||||
|
done.resolve(this.argv);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
done.reject(this.argv);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
startParse() {
|
||||||
|
this.argv = this.argv.argv;
|
||||||
|
this.parseStarted.resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Smartcli = Smartcli;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkuY2xhc3Nlcy5zbWFydGNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLmNsYXNzZXMuc21hcnRjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUV4QixNQUFZLE9BQU8sV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBRzlDO0lBT0k7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDOztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE1BQU0sRUFBQyxRQUFRO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7O0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxhQUFrQztRQUN6QyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsY0FBYztRQUM1QixNQUFNO0lBQ1YsQ0FBQztJQUNELFdBQVcsQ0FBQyxhQUF5RDtJQUVyRSxDQUFDOztJQUNELE9BQU87SUFFUCxDQUFDO0lBQ0QsVUFBVSxDQUFDLFVBQWlCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUNELFlBQVk7UUFDUixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUM7WUFDRixFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUFBLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7QUFFTCxDQUFDO0FBN0VZLGdCQUFRLFdBNkVwQixDQUFBIn0=
|
103
dist/smartcli.getters.js
vendored
103
dist/smartcli.getters.js
vendored
File diff suppressed because one or more lines are too long
55
dist/smartcli.interaction.js
vendored
55
dist/smartcli.interaction.js
vendored
@ -1,55 +0,0 @@
|
|||||||
/// <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
3
dist/smartcli.interfaces.js
vendored
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzbWFydGNsaS5pbnRlcmZhY2VzLmpzIiwic291cmNlc0NvbnRlbnQiOltdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
|
|
9
dist/smartcli.plugins.d.ts
vendored
Normal file
9
dist/smartcli.plugins.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import "typings-global";
|
||||||
|
export declare let argv: any;
|
||||||
|
export import beautylog = require("beautylog");
|
||||||
|
export declare let cliff: any;
|
||||||
|
export declare let inquirer: any;
|
||||||
|
export import lik = require("lik");
|
||||||
|
export declare let path: any;
|
||||||
|
export import q = require("q");
|
||||||
|
export import smartparam = require("smartparam");
|
11
dist/smartcli.plugins.js
vendored
11
dist/smartcli.plugins.js
vendored
@ -1,10 +1,11 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
|
||||||
"use strict";
|
"use strict";
|
||||||
exports.path = require("path");
|
require("typings-global");
|
||||||
|
exports.argv = require('yargs');
|
||||||
exports.beautylog = require("beautylog");
|
exports.beautylog = require("beautylog");
|
||||||
exports.cliff = require("cliff");
|
exports.cliff = require("cliff");
|
||||||
exports.inquirer = require("inquirer");
|
exports.inquirer = require("inquirer");
|
||||||
|
exports.lik = require("lik");
|
||||||
|
exports.path = require("path");
|
||||||
|
exports.q = require("q");
|
||||||
exports.smartparam = require("smartparam");
|
exports.smartparam = require("smartparam");
|
||||||
exports.argv = require('yargs').argv;
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUViLFlBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNwQyxhQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLGdCQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVCLFdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQztBQUN4QixZQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUNqQixrQkFBVSxXQUFXLFlBQVksQ0FBQyxDQUFDIn0=
|
||||||
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0Y2xpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDOztBQUUvQixZQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLGFBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsZ0JBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0Isa0JBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbkMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMiLCJmaWxlIjoic21hcnRjbGkucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJ0eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmV4cG9ydCBsZXQgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuZXhwb3J0IGxldCBiZWF1dHlsb2cgPSByZXF1aXJlKFwiYmVhdXR5bG9nXCIpO1xuZXhwb3J0IGxldCBjbGlmZiA9IHJlcXVpcmUoXCJjbGlmZlwiKTtcbmV4cG9ydCBsZXQgaW5xdWlyZXIgPSByZXF1aXJlKFwiaW5xdWlyZXJcIik7XG5leHBvcnQgbGV0IHNtYXJ0cGFyYW0gPSByZXF1aXJlKFwic21hcnRwYXJhbVwiKTtcbmV4cG9ydCBsZXQgYXJndiA9IHJlcXVpcmUoJ3lhcmdzJykuYXJndjsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
|
|
3
npmts.json
Normal file
3
npmts.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"mode":"default"
|
||||||
|
}
|
27
package.json
27
package.json
@ -1,8 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "smartcli",
|
"name": "smartcli",
|
||||||
"version": "0.0.13",
|
"version": "1.0.5",
|
||||||
"description": "nodejs wrapper for CLI related tasks",
|
"description": "nodejs wrapper for CLI related tasks",
|
||||||
"main": "index.js",
|
"main": "dist/index.js",
|
||||||
|
"typings": "dist/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(npmts)",
|
"test": "(npmts)",
|
||||||
"testm": "(cd ts/compile && gulp) && (node test.js jazz jam --awesome)",
|
"testm": "(cd ts/compile && gulp) && (node test.js jazz jam --awesome)",
|
||||||
@ -13,7 +14,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/pushrocks/smartcli.git"
|
"url": "https://gitlab.com/pushrocks/smartcli.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"json",
|
"json",
|
||||||
@ -23,17 +24,23 @@
|
|||||||
"author": "Smart Coordination GmbH <office@push.rocks> (https://push.rocks)",
|
"author": "Smart Coordination GmbH <office@push.rocks> (https://push.rocks)",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/pushrocks/smartcli/issues"
|
"url": "https://gitlab.com/pushrocks/smartcli/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/pushrocks/smartcli",
|
"homepage": "https://gitlab.com/pushrocks/smartcli",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"beautylog": "4.1.2",
|
"@types/q": "0.0.30",
|
||||||
|
"beautylog": "^5.0.20",
|
||||||
"cliff": "^0.1.10",
|
"cliff": "^0.1.10",
|
||||||
"inquirer": "^0.12.0",
|
"inquirer": "^1.1.2",
|
||||||
"smartparam": "0.0.7",
|
"lik": "^1.0.15",
|
||||||
"yargs": "^4.3.2"
|
"q": "^1.4.1",
|
||||||
|
"smartparam": "0.1.1",
|
||||||
|
"typings-global": "^1.0.6",
|
||||||
|
"yargs": "^5.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"npmts": "^5.0.3"
|
"npmts-g": "^5.2.8",
|
||||||
|
"should": "^11.1.0",
|
||||||
|
"typings-test": "^1.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
test/test.d.ts
vendored
Normal file
1
test/test.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import "typings-test";
|
176
test/test.js
176
test/test.js
@ -1,150 +1,36 @@
|
|||||||
/// <reference path="../ts/typings/main.d.ts" />
|
"use strict";
|
||||||
var smartcli = require("../dist/index.js");
|
require("typings-test");
|
||||||
var should = req;
|
const smartcli = require("../dist/index");
|
||||||
/* ------------------------------------------------------------------ *
|
let beautylog = require("beautylog");
|
||||||
* ------------------- CHECKS TESTS --------------------------------- *
|
let should = require("should");
|
||||||
* ------------------------------------------------------------------ */
|
describe("smartcli.Smartcli class", function () {
|
||||||
describe("smartcli", function () {
|
let smartCliTestObject;
|
||||||
describe(".check", function () {
|
describe("new Smartcli()", function () {
|
||||||
describe(".command", function () {
|
it("should create a new Smartcli", function () {
|
||||||
it("should return true when specified command is found", function () {
|
smartCliTestObject = new smartcli.Smartcli();
|
||||||
smartcli.check.command("jazz").should.be.true();
|
smartCliTestObject.should.be.instanceof(smartcli.Smartcli);
|
||||||
});
|
});
|
||||||
it("should return false when specified command is NOT found", function () {
|
});
|
||||||
smartcli.check.command("rock").should.be.false();
|
describe(".addCommand", function () {
|
||||||
|
it("should add an command", function () {
|
||||||
|
smartCliTestObject.addCommand({
|
||||||
|
commandName: "awesome"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe(".commandPresence", function () {
|
});
|
||||||
|
describe(".standardTask", function () {
|
||||||
|
it("should start parsing a standardTask", function (done) {
|
||||||
|
smartCliTestObject.standardTask()
|
||||||
|
.then(() => {
|
||||||
|
console.log("this is the standard Task!");
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe(".startParse", function () {
|
||||||
|
it("should start parsing the CLI input", function () {
|
||||||
|
smartCliTestObject.startParse();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
var checkCommandArgumentTest = function () {
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFFdEIsTUFBTyxRQUFRLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFDM0MsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUvQixRQUFRLENBQUMseUJBQXlCLEVBQUM7SUFDL0IsSUFBSSxrQkFBb0MsQ0FBQztJQUN6QyxRQUFRLENBQUMsZ0JBQWdCLEVBQUM7UUFDdEIsRUFBRSxDQUFDLDhCQUE4QixFQUFDO1lBQzlCLGtCQUFrQixHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGFBQWEsRUFBQztRQUNuQixFQUFFLENBQUMsdUJBQXVCLEVBQUM7WUFDdkIsa0JBQWtCLENBQUMsVUFBVSxDQUFDO2dCQUMxQixXQUFXLEVBQUMsU0FBUzthQUN4QixDQUFDLENBQUM7UUFFUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLGVBQWUsRUFBQztRQUNyQixFQUFFLENBQUMscUNBQXFDLEVBQUMsVUFBUyxJQUFJO1lBQ2xELGtCQUFrQixDQUFDLFlBQVksRUFBRTtpQkFDNUIsSUFBSSxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUNGLFFBQVEsQ0FBQyxhQUFhLEVBQUM7UUFDbkIsRUFBRSxDQUFDLG9DQUFvQyxFQUFDO1lBQ3BDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQyJ9
|
||||||
if (smartcli.check.commandArgument("jam", 1)) {
|
|
||||||
beautylog.success('There is a level 1 argument! Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('There seems to be no level 1 argument... This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (!smartcli.check.commandArgument("session", 2)) {
|
|
||||||
beautylog.success('There is no level 2 argument with the name of "session"! Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('There seems to be a level 2 argument with the name of "session"! This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
checkCommandArgumentTest();
|
|
||||||
var checkCommandArgumentPresenceTest = function () {
|
|
||||||
if (smartcli.check.commandArgumentPresence(1)) {
|
|
||||||
beautylog.success('There is a level 1 argument! Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('There seems to be no level 1 argument... This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (!smartcli.check.commandArgumentPresence(2)) {
|
|
||||||
beautylog.success('There is no level 2 argument! Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('There seems to be a level 2 argument... This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
checkCommandArgumentPresenceTest();
|
|
||||||
/* ------------------------------------------------------------------ *
|
|
||||||
* ------------------- GETTERS TESTS -------------------------------- *
|
|
||||||
* ------------------------------------------------------------------ */
|
|
||||||
var getCommandTest = function () {
|
|
||||||
var cliCommand = smartcli.get.command();
|
|
||||||
if (cliCommand.name == "jazz") {
|
|
||||||
beautylog.success('The specified command name is "jazz". Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('The specified command name is not "jazz". Something is wrong!');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getCommandTest();
|
|
||||||
var getCommandArgumentTest = function () {
|
|
||||||
var cliArgument = smartcli.get.commandArgument(1);
|
|
||||||
var cliArgument2 = smartcli.get.commandArgument(2);
|
|
||||||
if (cliArgument.name == "jam") {
|
|
||||||
beautylog.success('The first specified command argument name is "jam". Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('The first specified command argument name is not "jam". Something is wrong!');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (cliArgument2.name == "undefined") {
|
|
||||||
beautylog.success('The second specified command argument name is "undefined". Perfect!');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error('The second specified command argument name is not "undefined". Something is wrong!');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getCommandArgumentTest();
|
|
||||||
var getCommandArgsTest = function () {
|
|
||||||
var commandArgs = smartcli.get.commandArgs();
|
|
||||||
if (commandArgs[0].name == "jam") {
|
|
||||||
beautylog.success("first command argument is 'jam'. Perfect!");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error("first command argument is not 'jam'. Something is wromg!");
|
|
||||||
console.log(commandArgs[0].name);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getCommandArgsTest();
|
|
||||||
var getOptionTest = function () {
|
|
||||||
var cliOption = smartcli.get.option("awesome");
|
|
||||||
var cliOption2 = smartcli.get.option("terrific");
|
|
||||||
if (cliOption.specified) {
|
|
||||||
beautylog.success("awesome is specified. Perfect!");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error("awesome is not specified. Somehthing is wrong");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (!cliOption2.specified) {
|
|
||||||
beautylog.success("terrific is not specified. Perfect!");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.error("terrific is specified. Somehthing is wrong");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getOptionTest();
|
|
||||||
var getCwdTest = function () {
|
|
||||||
beautylog.info('The current directory is: ' + smartcli.get.cwd().path);
|
|
||||||
};
|
|
||||||
getCwdTest();
|
|
||||||
/* ------------------------------------------------------------------ *
|
|
||||||
* ------------------- INTERACTION TESTS ---------------------------- *
|
|
||||||
* ------------------------------------------------------------------ */
|
|
||||||
var interactionGetAnswerTest = function () {
|
|
||||||
smartcli.interaction.getAnswer('How do you feel?', function (answer) {
|
|
||||||
console.log('The answer is: ' + answer);
|
|
||||||
interactionGetChoiceTest();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var interactionGetChoiceTest = function () {
|
|
||||||
smartcli.interaction.getChoice('What music do you like to hear?', ['Jazz', 'Blues', 'Classical'], function (answer) {
|
|
||||||
console.log('The answer is: ' + answer);
|
|
||||||
endTests();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var endTests = function () {
|
|
||||||
beautylog.ok("No more tests!");
|
|
||||||
beautylog.success("Tests completed successfully!");
|
|
||||||
};
|
|
||||||
if (!smartcli.check.option("silent")) {
|
|
||||||
interactionGetAnswerTest();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
beautylog.info("--silent option is specified, thus we are not running interaction tests.");
|
|
||||||
endTests();
|
|
||||||
}
|
|
||||||
;
|
|
||||||
//# sourceMappingURL=test.js.map
|
|
187
test/test.ts
187
test/test.ts
@ -1,164 +1,37 @@
|
|||||||
/// <reference path="../ts/typings/main.d.ts" />
|
import "typings-test";
|
||||||
let smartcli = require("../dist/index.js");
|
|
||||||
let should = req
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ *
|
import smartcli = require("../dist/index");
|
||||||
* ------------------- CHECKS TESTS --------------------------------- *
|
let beautylog = require("beautylog");
|
||||||
* ------------------------------------------------------------------ */
|
let should = require("should");
|
||||||
|
|
||||||
describe("smartcli",function(){
|
describe("smartcli.Smartcli class",function(){
|
||||||
describe(".check",function(){
|
let smartCliTestObject:smartcli.Smartcli;
|
||||||
describe(".command",function(){
|
describe("new Smartcli()",function(){
|
||||||
it("should return true when specified command is found",function(){
|
it("should create a new Smartcli",function(){
|
||||||
smartcli.check.command("jazz").should.be.true();
|
smartCliTestObject = new smartcli.Smartcli();
|
||||||
|
smartCliTestObject.should.be.instanceof(smartcli.Smartcli);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe(".addCommand",function(){
|
||||||
|
it("should add an command",function(){
|
||||||
|
smartCliTestObject.addCommand({
|
||||||
|
commandName:"awesome"
|
||||||
});
|
});
|
||||||
it("should return false when specified command is NOT found",function(){
|
|
||||||
smartcli.check.command("rock").should.be.false();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
describe(".commandPresence",function(){
|
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe(".standardTask",function(){
|
||||||
|
it("should start parsing a standardTask",function(done){
|
||||||
|
smartCliTestObject.standardTask()
|
||||||
|
.then(() => {
|
||||||
|
console.log("this is the standard Task!");
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe(".startParse",function(){
|
||||||
|
it("should start parsing the CLI input",function(){
|
||||||
|
smartCliTestObject.startParse();
|
||||||
|
})
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var checkCommandArgumentTest = function() {
|
|
||||||
if (smartcli.check.commandArgument("jam",1)) {
|
|
||||||
beautylog.success('There is a level 1 argument! Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('There seems to be no level 1 argument... This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (!smartcli.check.commandArgument("session",2)) {
|
|
||||||
beautylog.success('There is no level 2 argument with the name of "session"! Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('There seems to be a level 2 argument with the name of "session"! This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
checkCommandArgumentTest();
|
|
||||||
|
|
||||||
var checkCommandArgumentPresenceTest = function() {
|
|
||||||
if (smartcli.check.commandArgumentPresence(1)) {
|
|
||||||
beautylog.success('There is a level 1 argument! Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('There seems to be no level 1 argument... This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if (!smartcli.check.commandArgumentPresence(2)) {
|
|
||||||
beautylog.success('There is no level 2 argument! Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('There seems to be a level 2 argument... This is wrong');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
checkCommandArgumentPresenceTest();
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ *
|
|
||||||
* ------------------- GETTERS TESTS -------------------------------- *
|
|
||||||
* ------------------------------------------------------------------ */
|
|
||||||
var getCommandTest = function(){
|
|
||||||
var cliCommand = smartcli.get.command();
|
|
||||||
if(cliCommand.name == "jazz") {
|
|
||||||
beautylog.success('The specified command name is "jazz". Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('The specified command name is not "jazz". Something is wrong!');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
getCommandTest();
|
|
||||||
|
|
||||||
var getCommandArgumentTest = function() {
|
|
||||||
var cliArgument = smartcli.get.commandArgument(1);
|
|
||||||
var cliArgument2 = smartcli.get.commandArgument(2);
|
|
||||||
if(cliArgument.name == "jam") {
|
|
||||||
beautylog.success('The first specified command argument name is "jam". Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('The first specified command argument name is not "jam". Something is wrong!');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cliArgument2.name == "undefined") {
|
|
||||||
beautylog.success('The second specified command argument name is "undefined". Perfect!');
|
|
||||||
} else {
|
|
||||||
beautylog.error('The second specified command argument name is not "undefined". Something is wrong!');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getCommandArgumentTest();
|
|
||||||
|
|
||||||
var getCommandArgsTest = function() {
|
|
||||||
var commandArgs = smartcli.get.commandArgs();
|
|
||||||
if(commandArgs[0].name == "jam") {
|
|
||||||
beautylog.success("first command argument is 'jam'. Perfect!");
|
|
||||||
} else {
|
|
||||||
beautylog.error("first command argument is not 'jam'. Something is wromg!");
|
|
||||||
console.log(commandArgs[0].name);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getCommandArgsTest();
|
|
||||||
|
|
||||||
var getOptionTest = function() {
|
|
||||||
var cliOption = smartcli.get.option("awesome");
|
|
||||||
var cliOption2 = smartcli.get.option("terrific");
|
|
||||||
if(cliOption.specified){
|
|
||||||
beautylog.success("awesome is specified. Perfect!")
|
|
||||||
} else {
|
|
||||||
beautylog.error("awesome is not specified. Somehthing is wrong");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
if(!cliOption2.specified){
|
|
||||||
beautylog.success("terrific is not specified. Perfect!")
|
|
||||||
} else {
|
|
||||||
beautylog.error("terrific is specified. Somehthing is wrong");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
getOptionTest();
|
|
||||||
|
|
||||||
var getCwdTest = function(){
|
|
||||||
beautylog.info('The current directory is: ' + smartcli.get.cwd().path);
|
|
||||||
};
|
|
||||||
getCwdTest();
|
|
||||||
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ *
|
|
||||||
* ------------------- INTERACTION TESTS ---------------------------- *
|
|
||||||
* ------------------------------------------------------------------ */
|
|
||||||
|
|
||||||
|
|
||||||
var interactionGetAnswerTest = function() {
|
|
||||||
smartcli.interaction.getAnswer('How do you feel?',function(answer){
|
|
||||||
console.log('The answer is: ' + answer);
|
|
||||||
interactionGetChoiceTest();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var interactionGetChoiceTest = function() {
|
|
||||||
smartcli.interaction.getChoice('What music do you like to hear?',['Jazz','Blues','Classical'],function(answer){
|
|
||||||
console.log('The answer is: ' + answer);
|
|
||||||
endTests();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var endTests = function() {
|
|
||||||
beautylog.ok("No more tests!");
|
|
||||||
beautylog.success("Tests completed successfully!");
|
|
||||||
};
|
|
||||||
|
|
||||||
if(!smartcli.check.option("silent")){
|
|
||||||
interactionGetAnswerTest();
|
|
||||||
} else {
|
|
||||||
beautylog.info("--silent option is specified, thus we are not running interaction tests.");
|
|
||||||
endTests();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
31
ts/index.ts
31
ts/index.ts
@ -1,29 +1,4 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
import "typings-global";
|
||||||
/// <reference path="./smartcli.interfaces.ts" />
|
|
||||||
|
|
||||||
import plugins = require("./smartcli.plugins");
|
import {Smartcli} from "./smartcli.classes.smartcli";
|
||||||
import SmartcliChecks = require("./smartcli.checks");
|
export {Smartcli} from "./smartcli.classes.smartcli";
|
||||||
import SmartcliGetters = require("./smartcli.getters");
|
|
||||||
import SmartcliInteractions = require("./smartcli.interaction");
|
|
||||||
|
|
||||||
/* ------------------------------------------------ *
|
|
||||||
* ---------- plugins for direct use -------------- *
|
|
||||||
* ------------------------------------------------ */
|
|
||||||
export let inquirer = plugins.inquirer; //inquirer is for asking questions
|
|
||||||
export let cliff = plugins.cliff; // formats cli output
|
|
||||||
export let argv = plugins.argv; //argv gets initial cli commands and options.
|
|
||||||
|
|
||||||
/* ------------------------------------------------ *
|
|
||||||
* ---------- checks ------------------------------ *
|
|
||||||
* ------------------------------------------------ */
|
|
||||||
export let check = SmartcliChecks;
|
|
||||||
|
|
||||||
/* ------------------------------------------------ *
|
|
||||||
* ---------- getters ----------------------------- *
|
|
||||||
* ------------------------------------------------ */
|
|
||||||
export let get = SmartcliGetters;
|
|
||||||
|
|
||||||
/* ------------------------------------------------ *
|
|
||||||
* ---------- interaction ----------------------------- *
|
|
||||||
* ------------------------------------------------ */
|
|
||||||
export let interaction = SmartcliInteractions;
|
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
|
||||||
/// <reference path="./smartcli.interfaces.ts" />
|
|
||||||
|
|
||||||
import plugins = require("./smartcli.plugins");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* checks for a special command string and returns true if found.
|
|
||||||
* @param commandString
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
export let command = function(commandString:string):boolean {
|
|
||||||
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}
|
|
||||||
*/
|
|
||||||
export let commandPresence = function():boolean {
|
|
||||||
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}
|
|
||||||
*/
|
|
||||||
export let commandArgument = function(commandArgumentString:string,level:number = 1):boolean {
|
|
||||||
if(commandArgumentPresence(level) && (plugins.argv._[level] == commandArgumentString )) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
export let commandArgumentPresence = function(level:number = 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}
|
|
||||||
*/
|
|
||||||
export let option = function(optionString):boolean {
|
|
||||||
if(plugins.smartparam.exists(plugins.argv, optionString)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
export let optionPresence = function():boolean {
|
|
||||||
if (plugins.argv.indexOf() != -1) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
@ -1,6 +1,6 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
import "typings-global";
|
||||||
/// <reference path="./smartcli.interfaces.ts" />
|
|
||||||
|
|
||||||
|
import "./smartcli.interfaces";
|
||||||
import plugins = require("./smartcli.plugins");
|
import plugins = require("./smartcli.plugins");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,7 +15,7 @@ export let getAnswer = function(questionString:string, cb) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
//make inquirer compatible question object
|
//make inquirer compatible question object
|
||||||
var question = {
|
let question = {
|
||||||
type: "input",
|
type: "input",
|
||||||
name: "userFeedback",
|
name: "userFeedback",
|
||||||
message: questionString,
|
message: questionString,
|
||||||
@ -25,7 +25,7 @@ export let getAnswer = function(questionString:string, cb) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
plugins.inquirer.prompt([question],function(answers){
|
plugins.inquirer.prompt([question],function(answers){
|
||||||
var answer = answers.userFeedback;
|
let answer = answers.userFeedback;
|
||||||
cb(answer);
|
cb(answer);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -43,7 +43,7 @@ export let getChoice = function(questionString:string, choiceOptions:string[], c
|
|||||||
}
|
}
|
||||||
|
|
||||||
//make inquirer compatible question object
|
//make inquirer compatible question object
|
||||||
var question = {
|
let question = {
|
||||||
type: "list",
|
type: "list",
|
||||||
name: "userFeedback",
|
name: "userFeedback",
|
||||||
message: questionString,
|
message: questionString,
|
||||||
@ -52,7 +52,7 @@ export let getChoice = function(questionString:string, choiceOptions:string[], c
|
|||||||
};
|
};
|
||||||
|
|
||||||
plugins.inquirer.prompt(question,function(answers){
|
plugins.inquirer.prompt(question,function(answers){
|
||||||
var answer = answers.userFeedback;
|
let answer = answers.userFeedback;
|
||||||
cb(answer);
|
cb(answer);
|
||||||
});
|
});
|
||||||
|
|
8
ts/smartcli.classes.interaction.ts
Normal file
8
ts/smartcli.classes.interaction.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import "typings-global";
|
||||||
|
import * as plugins from "./smartcli.plugins";
|
||||||
|
|
||||||
|
export class Question {
|
||||||
|
constructor(){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
83
ts/smartcli.classes.smartcli.ts
Normal file
83
ts/smartcli.classes.smartcli.ts
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
import "typings-global";
|
||||||
|
|
||||||
|
import * as plugins from "./smartcli.plugins";
|
||||||
|
import {Question} from "./smartcli.classes.interaction";
|
||||||
|
|
||||||
|
export class Smartcli {
|
||||||
|
argv;
|
||||||
|
questionsDone;
|
||||||
|
parseStarted;
|
||||||
|
commands;
|
||||||
|
questions;
|
||||||
|
version:string;
|
||||||
|
constructor(){
|
||||||
|
this.argv = plugins.argv;
|
||||||
|
this.questionsDone = plugins.q.defer();
|
||||||
|
this.parseStarted = plugins.q.defer();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* adds an alias, meaning one equals the other in terms of triggering associated commands
|
||||||
|
*/
|
||||||
|
addAlias(keyArg,aliasArg){
|
||||||
|
this.argv = this.argv.alias(keyArg,aliasArg);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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}){
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
this.parseStarted.promise
|
||||||
|
.then(() => {
|
||||||
|
if (this.argv._.indexOf(definitionArg.commandName) == 0) {
|
||||||
|
done.resolve(this.argv);
|
||||||
|
} else {
|
||||||
|
done.reject(this.argv);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gets a Promise for a command word
|
||||||
|
*/
|
||||||
|
getCommandPromise(commandNameArg){
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
addQuestion(definitionArg:{questionString:string,questionType:string}){
|
||||||
|
|
||||||
|
};
|
||||||
|
addHelp(){
|
||||||
|
|
||||||
|
}
|
||||||
|
addVersion(versionArg:string){
|
||||||
|
this.version = versionArg;
|
||||||
|
this.addAlias("v","version");
|
||||||
|
this.parseStarted.promise
|
||||||
|
.then(() => {
|
||||||
|
if(this.argv.v){
|
||||||
|
console.log(this.version);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
standardTask(){
|
||||||
|
let done = plugins.q.defer();
|
||||||
|
this.parseStarted.promise
|
||||||
|
.then(() => {
|
||||||
|
if(this.argv._.length == 0 && !this.argv.v){
|
||||||
|
done.resolve(this.argv);
|
||||||
|
} else {
|
||||||
|
done.reject(this.argv);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
return done.promise;
|
||||||
|
}
|
||||||
|
startParse(){
|
||||||
|
this.argv = this.argv.argv;
|
||||||
|
this.parseStarted.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,110 +0,0 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
|
||||||
/// <reference path="./smartcli.interfaces.ts" />
|
|
||||||
|
|
||||||
import plugins = require("./smartcli.plugins");
|
|
||||||
import SmartcliChecks = require("./smartcli.checks");
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param commandString
|
|
||||||
* @returns {{specified: boolean, name: any, arguments: CliCommandArgument}}
|
|
||||||
*/
|
|
||||||
export let command = function():CliCommand {
|
|
||||||
var cliCommand = {
|
|
||||||
specified: SmartcliChecks.commandPresence(),
|
|
||||||
name: plugins.argv._[0],
|
|
||||||
arguments: commandArgs()
|
|
||||||
}
|
|
||||||
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,22 +0,0 @@
|
|||||||
interface CliOption {
|
|
||||||
name: string;
|
|
||||||
specified:boolean;
|
|
||||||
value: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Directory {
|
|
||||||
path: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface CliCommand {
|
|
||||||
specified: boolean;
|
|
||||||
name: string;
|
|
||||||
arguments:CliCommandArgument[];
|
|
||||||
}
|
|
||||||
|
|
||||||
interface CliCommandArgument {
|
|
||||||
specified:boolean;
|
|
||||||
name:string;
|
|
||||||
level:number;
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
|||||||
/// <reference path="typings/main.d.ts" />
|
import "typings-global";
|
||||||
|
|
||||||
export let path = require("path");
|
export let argv = require('yargs');
|
||||||
export let beautylog = require("beautylog");
|
export import beautylog = require("beautylog");
|
||||||
export let cliff = require("cliff");
|
export let cliff = require("cliff");
|
||||||
export let inquirer = require("inquirer");
|
export let inquirer = require("inquirer");
|
||||||
export let smartparam = require("smartparam");
|
export import lik = require("lik");
|
||||||
export let argv = require('yargs').argv;
|
export let path = require("path");
|
||||||
|
export import q = require("q");
|
||||||
|
export import smartparam = require("smartparam");
|
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"ambientDependencies": {
|
|
||||||
"mocha": "registry:dt/mocha#2.2.5+20151023103246",
|
|
||||||
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
|
|
||||||
}
|
|
||||||
}
|
|
2
ts/typings/browser.d.ts
vendored
2
ts/typings/browser.d.ts
vendored
@ -1,2 +0,0 @@
|
|||||||
/// <reference path="browser/ambient/mocha/index.d.ts" />
|
|
||||||
/// <reference path="browser/ambient/node/index.d.ts" />
|
|
2
ts/typings/main.d.ts
vendored
2
ts/typings/main.d.ts
vendored
@ -1,2 +0,0 @@
|
|||||||
/// <reference path="main/ambient/mocha/index.d.ts" />
|
|
||||||
/// <reference path="main/ambient/node/index.d.ts" />
|
|
Reference in New Issue
Block a user