From 6334eb4d0f60fb26f5495afe115c113ae2abb888 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Sun, 7 May 2017 01:23:03 +0200 Subject: [PATCH] add cli asking for missing vars --- dist/smartscaf.classes.smartscaf.d.ts | 6 +++++- dist/smartscaf.classes.smartscaf.js | 27 +++++++++++++++++++++++---- dist/smartscaf.helpers.js | 2 ++ dist/smartscaf.plugins.d.ts | 3 ++- dist/smartscaf.plugins.js | 4 +++- test/test.ts | 4 ++++ ts/smartscaf.classes.smartscaf.ts | 23 ++++++++++++++++------- yarn.lock | 6 +----- 8 files changed, 56 insertions(+), 19 deletions(-) diff --git a/dist/smartscaf.classes.smartscaf.d.ts b/dist/smartscaf.classes.smartscaf.d.ts index ef72da5..4ea7c46 100644 --- a/dist/smartscaf.classes.smartscaf.d.ts +++ b/dist/smartscaf.classes.smartscaf.d.ts @@ -20,6 +20,10 @@ export declare class ScafTemplate { * @param variablesArg */ supplyVariables(variablesArg: any): Promise; + /** + * Will ask for the missing variables by cli interaction + */ + askCliForMissingVariables(): Promise; /** * finds all variables in a Template */ @@ -27,5 +31,5 @@ export declare class ScafTemplate { /** * checks if supplied Variables satisfy the template */ - private _checkSuppliedVariables(variablesArg); + private _checkSuppliedVariables(); } diff --git a/dist/smartscaf.classes.smartscaf.js b/dist/smartscaf.classes.smartscaf.js index e136084..550cb01 100644 --- a/dist/smartscaf.classes.smartscaf.js +++ b/dist/smartscaf.classes.smartscaf.js @@ -30,7 +30,25 @@ class ScafTemplate { supplyVariables(variablesArg) { return __awaiter(this, void 0, void 0, function* () { this.suppliedVariables = variablesArg; - this.missingVariables = yield this._checkSuppliedVariables(variablesArg); + this.missingVariables = yield this._checkSuppliedVariables(); + }); + } + /** + * Will ask for the missing variables by cli interaction + */ + askCliForMissingVariables() { + return __awaiter(this, void 0, void 0, function* () { + this.missingVariables = yield this._checkSuppliedVariables(); + let localSmartInteract = new plugins.smartinteract.SmartInteract(); + for (let missingVariable of this.missingVariables) { + localSmartInteract.addQuestions([{ + name: missingVariable, + type: 'input', + default: `undefined ${missingVariable}`, + message: `What is the value of ${missingVariable}?` + }]); + } + let answers = yield localSmartInteract.runQueue(); }); } /** @@ -45,16 +63,17 @@ class ScafTemplate { /** * checks if supplied Variables satisfy the template */ - _checkSuppliedVariables(variablesArg) { + _checkSuppliedVariables() { return __awaiter(this, void 0, void 0, function* () { let missingVars = []; for (let templateSmartFile of this.templateSmartfileArray) { - let localMissingVars = yield plugins.smarthbs.checkVarsSatisfaction(templateSmartFile.contents.toString(), variablesArg); + let localMissingVars = yield plugins.smarthbs.checkVarsSatisfaction(templateSmartFile.contents.toString(), this.suppliedVariables); missingVars = plugins.lodash.concat(missingVars, localMissingVars); + missingVars = plugins.lodash.uniq(missingVars); } return missingVars; }); } } exports.ScafTemplate = ScafTemplate; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwrQ0FBOEM7QUFXOUM7SUFBQTtRQU1FLHFCQUFnQixHQUFhLEVBQUUsQ0FBQTtJQTRDakMsQ0FBQztJQTFDQzs7T0FFRztJQUNHLG1CQUFtQixDQUFFLFVBQWtCOztZQUMzQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDMUYsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFDakMsQ0FBQztLQUFBO0lBRUQ7OztPQUdHO0lBQ0csZUFBZSxDQUFFLFlBQVk7O1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUE7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzFFLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ1csd0JBQXdCOztZQUNwQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1lBRXpELENBQUM7UUFDSCxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNXLHVCQUF1QixDQUFDLFlBQVk7O1lBQ2hELElBQUksV0FBVyxHQUFhLEVBQUUsQ0FBQTtZQUM5QixHQUFHLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksZ0JBQWdCLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUNqRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQ3JDLFlBQVksQ0FDYixDQUFBO2dCQUNELFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtZQUNwRSxDQUFDO1lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQTtRQUNwQixDQUFDO0tBQUE7Q0FDRjtBQWxERCxvQ0FrREMifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwrQ0FBOEM7QUFXOUM7SUFBQTtRQU1FLHFCQUFnQixHQUFhLEVBQUUsQ0FBQTtJQTZEakMsQ0FBQztJQTNEQzs7T0FFRztJQUNHLG1CQUFtQixDQUFFLFVBQWtCOztZQUMzQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDMUYsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFDakMsQ0FBQztLQUFBO0lBRUQ7OztPQUdHO0lBQ0csZUFBZSxDQUFFLFlBQVk7O1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUE7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7UUFDOUQsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDRyx5QkFBeUI7O1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO1lBQzVELElBQUksa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBQ2xFLEdBQUcsQ0FBQyxDQUFDLElBQUksZUFBZSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUMvQixJQUFJLEVBQUUsZUFBZTt3QkFDckIsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLGFBQWEsZUFBZSxFQUFFO3dCQUN2QyxPQUFPLEVBQUUsd0JBQXdCLGVBQWUsR0FBRztxQkFDcEQsQ0FBQyxDQUFDLENBQUE7WUFDTCxDQUFDO1lBQ0QsSUFBSSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNuRCxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNXLHdCQUF3Qjs7WUFDcEMsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUV6RCxDQUFDO1FBQ0gsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDVyx1QkFBdUI7O1lBQ25DLElBQUksV0FBVyxHQUFhLEVBQUUsQ0FBQTtZQUM5QixHQUFHLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksZ0JBQWdCLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUNqRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQTtnQkFDRCxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUE7Z0JBQ2xFLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNoRCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQTtRQUNwQixDQUFDO0tBQUE7Q0FDRjtBQW5FRCxvQ0FtRUMifQ== \ No newline at end of file diff --git a/dist/smartscaf.helpers.js b/dist/smartscaf.helpers.js index df98b31..8ed4faf 100644 --- a/dist/smartscaf.helpers.js +++ b/dist/smartscaf.helpers.js @@ -1 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/dist/smartscaf.plugins.d.ts b/dist/smartscaf.plugins.d.ts index 6c8e75e..b35f4db 100644 --- a/dist/smartscaf.plugins.d.ts +++ b/dist/smartscaf.plugins.d.ts @@ -3,5 +3,6 @@ import * as lodash from 'lodash'; import * as path from 'path'; import * as smartfile from 'smartfile'; import * as smarthbs from 'smarthbs'; +import * as smartinteract from 'smartinteract'; import * as smartq from 'smartq'; -export { lodash, path, smartfile, smarthbs, smartq }; +export { lodash, path, smartfile, smarthbs, smartinteract, smartq }; diff --git a/dist/smartscaf.plugins.js b/dist/smartscaf.plugins.js index 64b41e2..5aa224c 100644 --- a/dist/smartscaf.plugins.js +++ b/dist/smartscaf.plugins.js @@ -9,6 +9,8 @@ const smartfile = require("smartfile"); exports.smartfile = smartfile; const smarthbs = require("smarthbs"); exports.smarthbs = smarthbs; +const smartinteract = require("smartinteract"); +exports.smartinteract = smartinteract; const smartq = require("smartq"); exports.smartq = smartq; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFPOUIsd0JBQU07QUFOUiw2QkFBNEI7QUFPMUIsb0JBQUk7QUFOTix1Q0FBc0M7QUFPcEMsOEJBQVM7QUFOWCxxQ0FBb0M7QUFPbEMsNEJBQVE7QUFOVixpQ0FBZ0M7QUFPOUIsd0JBQU0ifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFROUIsd0JBQU07QUFQUiw2QkFBNEI7QUFRMUIsb0JBQUk7QUFQTix1Q0FBc0M7QUFRcEMsOEJBQVM7QUFQWCxxQ0FBb0M7QUFRbEMsNEJBQVE7QUFQViwrQ0FBOEM7QUFRNUMsc0NBQWE7QUFQZixpQ0FBZ0M7QUFROUIsd0JBQU0ifQ== \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index 404e515..de59022 100644 --- a/test/test.ts +++ b/test/test.ts @@ -19,4 +19,8 @@ tap.test('smartfile -> should accept variables', async () => { console.log(testScafTemplate.missingVariables) }) +tap.test('ask cli', async () => { + await testScafTemplate.askCliForMissingVariables() +}) + tap.start() diff --git a/ts/smartscaf.classes.smartscaf.ts b/ts/smartscaf.classes.smartscaf.ts index 6d36e1f..40d54af 100644 --- a/ts/smartscaf.classes.smartscaf.ts +++ b/ts/smartscaf.classes.smartscaf.ts @@ -32,15 +32,24 @@ export class ScafTemplate { */ async supplyVariables (variablesArg) { this.suppliedVariables = variablesArg - this.missingVariables = await this._checkSuppliedVariables(variablesArg) + this.missingVariables = await this._checkSuppliedVariables() } /** * Will ask for the missing variables by cli interaction */ - async askForMissingVariables () { - this.missingVariables = await this._checkSuppliedVariables(variablesArg) - + async askCliForMissingVariables () { + this.missingVariables = await this._checkSuppliedVariables() + let localSmartInteract = new plugins.smartinteract.SmartInteract() + for (let missingVariable of this.missingVariables) { + localSmartInteract.addQuestions([{ + name: missingVariable, + type: 'input', + default: `undefined ${missingVariable}`, + message: `What is the value of ${missingVariable}?` + }]) + } + let answers = await localSmartInteract.runQueue() } /** @@ -55,16 +64,16 @@ export class ScafTemplate { /** * checks if supplied Variables satisfy the template */ - private async _checkSuppliedVariables(variablesArg) { + private async _checkSuppliedVariables() { let missingVars: string[] = [] for (let templateSmartFile of this.templateSmartfileArray) { let localMissingVars = await plugins.smarthbs.checkVarsSatisfaction( templateSmartFile.contents.toString(), - variablesArg + this.suppliedVariables ) missingVars = plugins.lodash.concat(missingVars, localMissingVars) + missingVars = plugins.lodash.uniq(missingVars) } - return missingVars } } diff --git a/yarn.lock b/yarn.lock index 8b61322..de4199c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,11 +44,7 @@ version "2.0.29" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" -"@types/node@*": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.15.tgz#628429289604c5f7e56c13f3a0422f3e59df1a17" - -"@types/node@^6.0.48": +"@types/node@*", "@types/node@^6.0.48": version "6.0.72" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.72.tgz#0f19de38555f3c33d733d678991347f7d0eefaff"