6 Commits

Author SHA1 Message Date
a4cd5175b3 2.0.5 2020-02-02 13:46:00 +00:00
97c3ccb329 fix(core): update 2020-02-02 13:45:59 +00:00
cfdd54eff1 2.0.4 2018-07-25 17:39:31 +02:00
741365d325 fix(ci): build with right access level for npm 2018-07-25 17:39:31 +02:00
b36e95af1a 2.0.3 2018-07-25 17:37:34 +02:00
ac9ef4915e fix(spendendencies): fix old import to use new dependency 2018-07-25 17:37:34 +02:00
8 changed files with 752 additions and 767 deletions

View File

@ -1,33 +0,0 @@
# smartinteract
smart cli interaction
## Availabililty
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartinteract)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartinteract)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartinteract)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartinteract/)
## Status for master
[![build status](https://GitLab.com/pushrocks/smartinteract/badges/master/build.svg)](https://GitLab.com/pushrocks/smartinteract/commits/master)
[![coverage report](https://GitLab.com/pushrocks/smartinteract/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartinteract/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/smartinteract.svg)](https://www.npmjs.com/package/smartinteract)
[![Dependency Status](https://david-dm.org/pushrocks/smartinteract.svg)](https://david-dm.org/pushrocks/smartinteract)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/smartinteract/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/smartinteract/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/smartinteract/badges/code.svg)](https://www.bithound.io/github/pushrocks/smartinteract)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage
Use TypeScript for best in class instellisense.
For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

View File

@ -1,6 +1,6 @@
{
"npmci": {
"npmGlobalTools": ["npmts"]
},
"npmAccessLevel": "public"
"npmGlobalTools": ["npmts"],
"npmAccessLevel": "public"
}
}

1366
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{
"name": "@pushrocks/smartinteract",
"private": false,
"version": "2.0.2",
"version": "2.0.5",
"description": "smart cli interaction",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
@ -25,13 +25,16 @@
},
"homepage": "https://gitlab.com/pushrocks/smartinteract#README",
"dependencies": {
"@pushrocks/lik": "^3.0.1",
"@pushrocks/smartpromise": "^2.0.5",
"@types/inquirer": "0.0.42",
"inquirer": "^6.0.0"
"@pushrocks/lik": "^3.0.13",
"@pushrocks/smartparam": "^1.1.6",
"@pushrocks/smartpromise": "^3.0.6",
"@types/inquirer": "^6.5.0",
"inquirer": "^7.0.4"
},
"devDependencies": {
"@gitzone/tsrun": "^1.1.9",
"@pushrocks/tapbundle": "^3.0.1"
"@gitzone/tsrun": "^1.2.8",
"@pushrocks/tapbundle": "^3.2.0",
"tslint": "^6.0.0",
"tslint-config-prettier": "^1.18.0"
}
}

View File

@ -30,14 +30,14 @@ tap.test('should add question to SmartInteract instance', async () => {
{
name: 'some.dotted.name',
type: 'input',
message: 'what is your second favourite color? Answer is red',
message: 'what is your second favourite color? Answer is aValidAnswer',
default: 'aValidAnswer'
}
]);
});
tap.test('should use default value when not in CI', async () => {
let answerBucket = await testInteract.runQueue();
const answerBucket = await testInteract.runQueue();
expect(answerBucket.getAnswerFor('testQuestion1')).to.equal('blue');
expect(answerBucket.getAnswerFor('testQuestion2')).to.equal('red');
expect(answerBucket.getAnswerFor('some.dotted.name')).to.equal('aValidAnswer');

View File

@ -0,0 +1,33 @@
import * as plugins from './smartinteract.plugins';
import { IAnswerObject } from './smartinteract.classes.smartinteract';
/**
* class AnswerBucket holds answers
*/
export class AnswerBucket {
answerMap = new plugins.lik.Objectmap<IAnswerObject>();
/**
* add an answer to the bucket
*/
addAnswer(answerArg: IAnswerObject) {
this.answerMap.add(answerArg);
}
/**
* gets an answer for a specific name
*/
getAnswerFor(nameArg: string) {
let answer = this.answerMap.find(answerArg => {
return answerArg.name === nameArg;
});
return answer ? answer.value : null;
}
/**
* gets all answers as array
*/
getAllAnswers() {
return this.answerMap.getArray();
}
}

View File

@ -1,6 +1,6 @@
import * as plugins from './smartinteract.plugins';
import * as smartq from 'smartq';
import { Objectmap } from '@pushrocks/lik';
import * as smartpromise from '@pushrocks/smartpromise';
import { AnswerBucket } from './smartinteract.classes.answerbucket';
/**
* the availeable question types
@ -48,7 +48,7 @@ export class SmartInteract {
/**
* holds the qestion queue, that is emptied once you call
*/
private questionMap = new Objectmap<IQuestionObject>();
private questionMap = new plugins.lik.Objectmap<IQuestionObject>();
/**
* constructor of class SmartInteract
@ -63,7 +63,7 @@ export class SmartInteract {
* skips the queue
*/
askQuestion(optionsArg: IQuestionObject): Promise<IAnswerObject> {
let done = smartq.defer<IAnswerObject>();
let done = smartpromise.defer<IAnswerObject>();
if (this.isValidEnv()) {
plugins.inquirer
.prompt([
@ -76,13 +76,9 @@ export class SmartInteract {
validate: optionsArg.validate
}
])
.then((answers: IAnswerObject[]) => {
.then((answers) => {
// adjust to the fact that now dots define paths for inquirer
let answerValue: any = answers;
let nameArray = optionsArg.name.split('.');
for (let name of nameArray) {
answerValue = answerValue[name];
}
let answerValue = plugins.smartparam.smartGet(answers, optionsArg.name);
done.resolve({
name: optionsArg.name,
value: answerValue
@ -113,7 +109,7 @@ export class SmartInteract {
* run the question queue
*/
runQueue() {
let done = smartq.defer<AnswerBucket>();
let done = smartpromise.defer<AnswerBucket>();
let answerBucket = new AnswerBucket();
let handleQuestion = async () => {
if (!this.questionMap.isEmpty()) {
@ -140,34 +136,3 @@ export class SmartInteract {
}
}
}
/**
* class AnswerBucket holds answers
*/
export class AnswerBucket {
answerMap = new Objectmap<IAnswerObject>();
/**
* add an answer to the bucket
*/
addAnswer(answerArg: IAnswerObject) {
this.answerMap.add(answerArg);
}
/**
* gets an answer for a specific name
*/
getAnswerFor(nameArg: string) {
let answer = this.answerMap.find(answerArg => {
return answerArg.name === nameArg;
});
return answer.value;
}
/**
* gets all answers as array
*/
getAllAnswers() {
return this.answerMap.getArray();
}
}

View File

@ -1,3 +1,14 @@
// pushrocks scope
import * as lik from '@pushrocks/lik';
import * as smartparam from '@pushrocks/smartparam';
export {
lik,
smartparam
}
// third party scope
import * as inquirer from 'inquirer';
export { inquirer };