BREAKING CHANGE(scope): switch to new @pushrocks scope

This commit is contained in:
Philipp Kunz 2018-08-27 23:55:14 +02:00
parent c5ec7e9c24
commit a3f18c17ed
17 changed files with 1740 additions and 1405 deletions

View File

@ -3,69 +3,140 @@ image: hosttoday/ht-docker-node:npmci
cache: cache:
paths: paths:
- .yarn/ - .npmci_cache/
key: "$CI_BUILD_STAGE" key: "$CI_BUILD_STAGE"
stages: stages:
- security
- test - test
- release - release
- trigger - metadata
- pages
# ====================
# security stage
# ====================
mirror:
stage: security
script:
- npmci git mirror
tags:
- docker
- notpriv
snyk:
stage: security
script:
- npmci command npm install -g snyk
- npmci command npm install --ignore-scripts
- npmci command snyk test
tags:
- docker
- notpriv
# ====================
# test stage
# ====================
testLEGACY: testLEGACY:
stage: test stage: test
script: script:
- npmci test legacy - npmci node install legacy
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- notpriv
allow_failure: true allow_failure: true
testLTS: testLTS:
stage: test stage: test
script: script:
- npmci test lts - npmci node install lts
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- notpriv
testSTABLE: testSTABLE:
stage: test stage: test
script: script:
- npmci test stable - npmci node install stable
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- notpriv
release: release:
stage: release stage: release
script: script:
- npmci publish - npmci node install stable
- npmci npm publish
only: only:
- tags - tags
tags: tags:
- docker - docker
- notpriv
# ====================
# metadata stage
# ====================
codequality:
stage: metadata
image: docker:stable
allow_failure: true
services:
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [codeclimate.json]
tags:
- docker
- priv
trigger: trigger:
stage: trigger stage: metadata
script: script:
- npmci trigger - npmci trigger
only: only:
- tags - tags
tags: tags:
- docker - docker
- notpriv
pages: pages:
image: hosttoday/ht-docker-node:npmci image: hosttoday/ht-docker-node:npmci
stage: pages stage: metadata
script: script:
- npmci command yarn global add npmpage - npmci command npm install -g typedoc typescript
- npmci command npmpage - npmci npm install
- npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/
tags: tags:
- docker - docker
- notpriv
only: only:
- tags - tags
artifacts: artifacts:
expire_in: 1 week expire_in: 1 week
paths: paths:
- public - public
allow_failure: true
windowsCompatibility:
image: stefanscherer/node-windows:10-build-tools
stage: metadata
script:
- npm install & npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- windows
allow_failure: true

View File

@ -30,11 +30,11 @@ export declare class ScafTemplate {
* finds all variables in a Template in as string * finds all variables in a Template in as string
* e.g. myobject.someKey and myobject.someOtherKey * e.g. myobject.someKey and myobject.someOtherKey
*/ */
private _findVariablesInTemplate(); private _findVariablesInTemplate;
/** /**
* checks if supplied Variables satisfy the template * checks if supplied Variables satisfy the template
*/ */
private _checkSuppliedVariables(); private _checkSuppliedVariables;
/** /**
* checks the default.yml at the root of a template for default variables * checks the default.yml at the root of a template for default variables
* allows 2 ways of notation in YAML: * allows 2 ways of notation in YAML:
@ -47,5 +47,5 @@ export declare class ScafTemplate {
* >> - yourKey: * >> - yourKey:
* >> - yourDeeperKey: yourValue * >> - yourDeeperKey: yourValue
*/ */
private _checkDefaultVariables(); private _checkDefaultVariables;
} }

View File

@ -33,7 +33,7 @@ class ScafTemplate {
*/ */
supplyVariables(variablesArg) { supplyVariables(variablesArg) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
this.suppliedVariables = plugins.lodash.merge(this.suppliedVariables, variablesArg); this.suppliedVariables = Object.assign({}, this.suppliedVariables, variablesArg);
this.missingVariables = yield this._checkSuppliedVariables(); this.missingVariables = yield this._checkSuppliedVariables();
}); });
} }
@ -45,7 +45,8 @@ class ScafTemplate {
this.missingVariables = yield this._checkSuppliedVariables(); this.missingVariables = yield this._checkSuppliedVariables();
let localSmartInteract = new plugins.smartinteract.SmartInteract(); let localSmartInteract = new plugins.smartinteract.SmartInteract();
for (let missingVariable of this.missingVariables) { for (let missingVariable of this.missingVariables) {
localSmartInteract.addQuestions([{ localSmartInteract.addQuestions([
{
name: missingVariable, name: missingVariable,
type: 'input', type: 'input',
default: (() => { default: (() => {
@ -57,7 +58,8 @@ class ScafTemplate {
} }
})(), })(),
message: `What is the value of ${missingVariable}?` message: `What is the value of ${missingVariable}?`
}]); }
]);
} }
let answerBucket = yield localSmartInteract.runQueue(); let answerBucket = yield localSmartInteract.runQueue();
answerBucket.answerMap.forEach((answer) => __awaiter(this, void 0, void 0, function* () { answerBucket.answerMap.forEach((answer) => __awaiter(this, void 0, void 0, function* () {
@ -67,7 +69,7 @@ class ScafTemplate {
} }
writeToDisk(destinationDirArg) { writeToDisk(destinationDirArg) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let smartfileArrayToWrite = plugins.lodash.cloneDeep(this.templateSmartfileArray); let smartfileArrayToWrite = this.templateSmartfileArray;
for (let smartfile of smartfileArrayToWrite) { for (let smartfile of smartfileArrayToWrite) {
// render the template // render the template
let template = yield plugins.smarthbs.getTemplateForString(smartfile.contents.toString()); let template = yield plugins.smarthbs.getTemplateForString(smartfile.contents.toString());
@ -91,9 +93,11 @@ class ScafTemplate {
let templateVariables = []; let templateVariables = [];
for (let templateSmartfile of this.templateSmartfileArray) { for (let templateSmartfile of this.templateSmartfileArray) {
let localTemplateVariables = yield plugins.smarthbs.findVarsInHbsString(templateSmartfile.contents.toString()); let localTemplateVariables = yield plugins.smarthbs.findVarsInHbsString(templateSmartfile.contents.toString());
templateVariables = plugins.lodash.concat(templateVariables, localTemplateVariables); templateVariables = [...templateVariables, ...localTemplateVariables];
} }
templateVariables = plugins.lodash.uniq(templateVariables); templateVariables = templateVariables.filter((value, index, self) => {
return self.indexOf(value) === index;
});
}); });
} }
/** /**
@ -104,9 +108,14 @@ class ScafTemplate {
let missingVars = []; let missingVars = [];
for (let templateSmartfile of this.templateSmartfileArray) { for (let templateSmartfile of this.templateSmartfileArray) {
let localMissingVars = yield plugins.smarthbs.checkVarsSatisfaction(templateSmartfile.contents.toString(), this.suppliedVariables); let localMissingVars = yield plugins.smarthbs.checkVarsSatisfaction(templateSmartfile.contents.toString(), this.suppliedVariables);
missingVars = plugins.lodash.concat(missingVars, localMissingVars); missingVars = [
...missingVars,
...localMissingVars
];
} }
missingVars = plugins.lodash.uniq(missingVars); missingVars = missingVars.filter((value, index, self) => {
return self.indexOf(value) === index;
});
return missingVars; return missingVars;
}); });
} }
@ -138,4 +147,4 @@ class ScafTemplate {
} }
} }
exports.ScafTemplate = ScafTemplate; exports.ScafTemplate = ScafTemplate;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwrQ0FBOEM7QUFDOUMsK0NBQThDO0FBVzlDO0lBQUE7UUFNRSxzQkFBaUIsR0FBUSxFQUFFLENBQUE7UUFDM0IscUJBQWdCLEdBQWEsRUFBRSxDQUFBO0lBOEhqQyxDQUFDO0lBNUhDOztPQUVHO0lBQ0csbUJBQW1CLENBQUUsVUFBa0I7O1lBQzNDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQzlDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUMxRixNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1lBQ3JDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7WUFDcEMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtRQUNyQyxDQUFDO0tBQUE7SUFFRDs7O09BR0c7SUFDRyxlQUFlLENBQUUsWUFBWTs7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQTtZQUNuRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUM5RCxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNHLHlCQUF5Qjs7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7WUFDNUQsSUFBSSxrQkFBa0IsR0FBRyxJ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 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzY2FmLmNsYXNzZXMuc21hcnRzY2FmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwrQ0FBK0M7QUFDL0MsK0NBQStDO0FBVy9DO0lBQUE7UUFNRSxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIscUJBQWdCLEdBQWEsRUFBRSxDQUFDO0lBd0lsQyxDQUFDO0lBdElDOztPQUVHO0lBQ0csbUJBQW1CLENBQUMsVUFBa0I7O1lBQzFDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzRixNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0tBQUE7SUFFRDs7O09BR0c7SUFDRyxlQUFlLENBQUMsWUFBWTs7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixxQkFDakIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixZQUFZLENBQ2hCLENBQUM7WUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvRCxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNHLHlCQUF5Qjs7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0QsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFB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

View File

@ -40,4 +40,4 @@ exports.deepAddToObject = (objectArg, varStringArg, valueArg) => __awaiter(this,
} }
} }
}); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7O0dBRUc7QUFDUSxRQUFBLGVBQWUsR0FBRyxDQUFPLFNBQVMsRUFBRSxZQUFvQixFQUFFLFFBQWdCO0lBQ25GLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0MsSUFBSSxnQkFBZ0IsR0FBRyxTQUFTLENBQUE7SUFDaEMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlCLDZCQUE2QjtRQUM3QixJQUFJLFdBQVcsR0FBVyxDQUFDO1lBQ3pCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUM3QixDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUNiLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFSixzQ0FBc0M7UUFDdEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDL0MsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFBO1lBQ3BDLGdCQUFnQixHQUFHLElBQUksQ0FBQTtRQUN6QixDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNyRCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDOUIsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUMsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3BELGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUMxQyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQSxDQUFBIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7O0dBRUc7QUFDUSxRQUFBLGVBQWUsR0FBRyxDQUFPLFNBQVMsRUFBRSxZQUFvQixFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN2RixJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNDLElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFBO0lBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQy9DLElBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUU5Qiw2QkFBNkI7UUFDN0IsSUFBSSxXQUFXLEdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7YUFDNUI7WUFDRCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFSixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzlDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQTtZQUNwQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUE7U0FDeEI7YUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxFQUFFO1lBQ3BELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUM5QixnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtTQUM3QzthQUFNLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxFQUFFO1lBQ25ELGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQzdDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7U0FDekM7S0FDRjtBQUNILENBQUMsQ0FBQSxDQUFBIn0=

View File

@ -1,5 +1,3 @@
import 'typings-global';
import * as lodash from 'lodash';
import * as path from 'path'; import * as path from 'path';
import * as smartfile from 'smartfile'; import * as smartfile from 'smartfile';
import * as smartfm from 'smartfm'; import * as smartfm from 'smartfm';
@ -7,4 +5,4 @@ import * as smarthbs from 'smarthbs';
import * as smartinteract from 'smartinteract'; import * as smartinteract from 'smartinteract';
import * as smartq from 'smartq'; import * as smartq from 'smartq';
import * as smartyaml from 'smartyaml'; import * as smartyaml from 'smartyaml';
export { lodash, path, smartfile, smartfm, smarthbs, smartinteract, smartq, smartyaml }; export { path, smartfile, smartfm, smarthbs, smartinteract, smartq, smartyaml };

View File

@ -1,8 +1,5 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
require("typings-global");
const lodash = require("lodash");
exports.lodash = lodash;
const path = require("path"); const path = require("path");
exports.path = path; exports.path = path;
const smartfile = require("smartfile"); const smartfile = require("smartfile");
@ -17,4 +14,4 @@ const smartq = require("smartq");
exports.smartq = smartq; exports.smartq = smartq;
const smartyaml = require("smartyaml"); const smartyaml = require("smartyaml");
exports.smartyaml = smartyaml; exports.smartyaml = smartyaml;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QixpQ0FBZ0M7QUFVOUIsd0JBQU07QUFUUiw2QkFBNEI7QUFVMUIsb0JBQUk7QUFUTix1Q0FBc0M7QUFVcEMsOEJBQVM7QUFUWCxtQ0FBa0M7QUFVaEMsMEJBQU87QUFUVCxxQ0FBb0M7QUFVbEMsNEJBQVE7QUFUViwrQ0FBOEM7QUFVNUMsc0NBQWE7QUFUZixpQ0FBZ0M7QUFVOUIsd0JBQU07QUFUUix1Q0FBc0M7QUFVcEMsOEJBQVMifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzY2FmLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNjYWYucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE0QjtBQVMxQixvQkFBSTtBQVJOLHVDQUFzQztBQVNwQyw4QkFBUztBQVJYLG1DQUFrQztBQVNoQywwQkFBTztBQVJULHFDQUFvQztBQVNsQyw0QkFBUTtBQVJWLCtDQUE4QztBQVM1QyxzQ0FBYTtBQVJmLGlDQUFnQztBQVM5Qix3QkFBTTtBQVJSLHVDQUFzQztBQVNwQyw4QkFBUyJ9

View File

@ -1,13 +1,16 @@
# smartscaf # smartscaf
scaffold projects quickly scaffold projects quickly
## Availabililty ## Availabililty
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartscaf) [![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartscaf)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartscaf) [![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartscaf)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartscaf) [![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartscaf)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartscaf/) [![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartscaf/)
## Status for master ## Status for master
[![build status](https://GitLab.com/pushrocks/smartscaf/badges/master/build.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master) [![build status](https://GitLab.com/pushrocks/smartscaf/badges/master/build.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master)
[![coverage report](https://GitLab.com/pushrocks/smartscaf/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master) [![coverage report](https://GitLab.com/pushrocks/smartscaf/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/smartscaf.svg)](https://www.npmjs.com/package/smartscaf) [![npm downloads per month](https://img.shields.io/npm/dm/smartscaf.svg)](https://www.npmjs.com/package/smartscaf)
@ -19,11 +22,12 @@ scaffold projects quickly
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage ## Usage
Use TypeScript for best in class instellisense. Use TypeScript for best in class instellisense.
For further information read the linked docs at the top of this README. For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) > | 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://) [![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://)

View File

@ -3,8 +3,7 @@
"coverageTreshold": 30 "coverageTreshold": 30
}, },
"npmci": { "npmci": {
"globalNpmTools": [ "npmGlobalTools": [],
"npmts" "npmAccessLevel": "public"
]
} }
} }

1475
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,13 @@
{ {
"name": "smartscaf", "name": "@pushrocks/smartscaf",
"version": "1.0.14", "version": "1.0.14",
"private": false,
"description": "scaffold projects quickly", "description": "scaffold projects quickly",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
"scripts": { "scripts": {
"test": "(npmts)", "test": "(tstest test/)",
"build": "(tsbuild)",
"testLocal": "(npmts --notest && ts-node --compilerOptions '{\"target\":\"es6\"}' test/test.ts)" "testLocal": "(npmts --notest && ts-node --compilerOptions '{\"target\":\"es6\"}' test/test.ts)"
}, },
"repository": { "repository": {
@ -24,17 +26,20 @@
"npm" "npm"
], ],
"devDependencies": { "devDependencies": {
"tapbundle": "^1.1.1" "@gitzone/tsbuild": "^2.0.22",
"@gitzone/tsrun": "^1.1.12",
"@gitzone/tstest": "^1.0.15",
"@pushrocks/tapbundle": "^3.0.5",
"@types/node": "^10.9.2"
}, },
"dependencies": { "dependencies": {
"@pushrocks/smartfile": "^6.0.8",
"@pushrocks/smartfm": "^2.0.1",
"@pushrocks/smarthbs": "^2.0.0",
"@pushrocks/smartinteract": "^2.0.4",
"@pushrocks/smartpromise": "^2.0.5",
"@pushrocks/smartyaml": "^2.0.3",
"@types/lodash": "^4.14.72", "@types/lodash": "^4.14.72",
"lodash": "^4.17.4", "lodash": "^4.17.4"
"smartfile": "^4.2.20",
"smartfm": "^1.0.5",
"smarthbs": "^1.0.16",
"smartinteract": "^1.0.10",
"smartq": "^1.1.6",
"smartyaml": "^1.0.2",
"typings-global": "^1.0.20"
} }
} }

View File

@ -1,13 +1,16 @@
# smartscaf # smartscaf
scaffold projects quickly scaffold projects quickly
## Availabililty ## Availabililty
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartscaf) [![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartscaf)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartscaf) [![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/smartscaf)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartscaf) [![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartscaf)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartscaf/) [![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartscaf/)
## Status for master ## Status for master
[![build status](https://GitLab.com/pushrocks/smartscaf/badges/master/build.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master) [![build status](https://GitLab.com/pushrocks/smartscaf/badges/master/build.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master)
[![coverage report](https://GitLab.com/pushrocks/smartscaf/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master) [![coverage report](https://GitLab.com/pushrocks/smartscaf/badges/master/coverage.svg)](https://GitLab.com/pushrocks/smartscaf/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/smartscaf.svg)](https://www.npmjs.com/package/smartscaf) [![npm downloads per month](https://img.shields.io/npm/dm/smartscaf.svg)](https://www.npmjs.com/package/smartscaf)
@ -19,11 +22,12 @@ scaffold projects quickly
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage ## Usage
Use TypeScript for best in class instellisense. Use TypeScript for best in class instellisense.
For further information read the linked docs at the top of this README. For further information read the linked docs at the top of this README.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) > | 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://) [![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://)

View File

@ -1,37 +1,37 @@
import { expect, tap } from 'tapbundle' import { expect, tap } from '@pushrocks/tapbundle';
import * as path from 'path' import * as path from 'path';
import * as smartscaf from '../ts/index' import * as smartscaf from '../ts/index';
// process.env.CI = 'true' process.env.CI = 'true'
let testScafTemplate: smartscaf.ScafTemplate let testScafTemplate: smartscaf.ScafTemplate;
tap.test('should create new Smartscaf instance', async () => { tap.test('should create new Smartscaf instance', async () => {
testScafTemplate = new smartscaf.ScafTemplate() testScafTemplate = new smartscaf.ScafTemplate();
expect(testScafTemplate).to.be.instanceof(smartscaf.ScafTemplate) expect(testScafTemplate).to.be.instanceof(smartscaf.ScafTemplate);
}) });
tap.test('Smartscaf instance -> should read a template directory', async () => { tap.test('Smartscaf instance -> should read a template directory', async () => {
await testScafTemplate.readTemplateFromDir('./test/test_template') await testScafTemplate.readTemplateFromDir('./test/test_template');
expect(testScafTemplate.templateSmartfileArray.length).to.equal(5) expect(testScafTemplate.templateSmartfileArray.length).to.equal(5);
}) });
tap.test('smartfile -> should accept variables', async () => { tap.test('smartfile -> should accept variables', async () => {
await testScafTemplate.supplyVariables({}) await testScafTemplate.supplyVariables({});
console.log(testScafTemplate.missingVariables) console.log(testScafTemplate.missingVariables);
}) });
tap.test('ask cli', async () => { tap.test('ask cli', async () => {
await testScafTemplate.askCliForMissingVariables() await testScafTemplate.askCliForMissingVariables();
}) });
tap.test('should have valid supplied variables', async () => { tap.test('should have valid supplied variables', async () => {
console.log(testScafTemplate.suppliedVariables) console.log(testScafTemplate.suppliedVariables);
}) });
tap.test('should output ready rendered template', async () => { tap.test('should output ready rendered template', async () => {
await testScafTemplate.writeToDisk(path.resolve('./test/test_output')) await testScafTemplate.writeToDisk(path.resolve('./test/test_output'));
}) });
tap.start() tap.start();

View File

@ -1 +1 @@
export * from './smartscaf.classes.smartscaf' export * from './smartscaf.classes.smartscaf';

View File

@ -1,120 +1,130 @@
import * as plugins from './smartscaf.plugins' import * as plugins from './smartscaf.plugins';
import * as helpers from './smartscaf.helpers' import * as helpers from './smartscaf.helpers';
// interfaces // interfaces
import { Smartfile } from 'smartfile' import { Smartfile } from '@pushrocks/smartfile';
export interface ScafTemplateContructorOptions { export interface ScafTemplateContructorOptions {
name?: string, name?: string;
description?: string description?: string;
sourceDir?: string sourceDir?: string;
} }
export class ScafTemplate { export class ScafTemplate {
name: string name: string;
description: string description: string;
templateSmartfileArray: Smartfile[] templateSmartfileArray: Smartfile[];
requiredVariables: string[] requiredVariables: string[];
defaultVariables: any defaultVariables: any;
suppliedVariables: any = {} suppliedVariables: any = {};
missingVariables: string[] = [] missingVariables: string[] = [];
/** /**
* read a template from a directory * read a template from a directory
*/ */
async readTemplateFromDir (dirPathArg: string) { async readTemplateFromDir(dirPathArg: string) {
let dirPath = plugins.path.resolve(dirPathArg) let dirPath = plugins.path.resolve(dirPathArg);
this.templateSmartfileArray = await plugins.smartfile.fs.fileTreeToObject(dirPath, '**/*') this.templateSmartfileArray = await plugins.smartfile.fs.fileTreeToObject(dirPath, '**/*');
await this._findVariablesInTemplate() await this._findVariablesInTemplate();
await this._checkSuppliedVariables() await this._checkSuppliedVariables();
await this._checkDefaultVariables() await this._checkDefaultVariables();
} }
/** /**
* supply the variables to render the teplate with * supply the variables to render the teplate with
* @param variablesArg gets merged with this.suppliedVariables * @param variablesArg gets merged with this.suppliedVariables
*/ */
async supplyVariables (variablesArg) { async supplyVariables(variablesArg) {
this.suppliedVariables = plugins.lodash.merge(this.suppliedVariables, variablesArg) this.suppliedVariables = {
this.missingVariables = await this._checkSuppliedVariables() ...this.suppliedVariables,
...variablesArg
};
this.missingVariables = await this._checkSuppliedVariables();
} }
/** /**
* Will ask for the missing variables by cli interaction * Will ask for the missing variables by cli interaction
*/ */
async askCliForMissingVariables () { async askCliForMissingVariables() {
this.missingVariables = await this._checkSuppliedVariables() this.missingVariables = await this._checkSuppliedVariables();
let localSmartInteract = new plugins.smartinteract.SmartInteract() let localSmartInteract = new plugins.smartinteract.SmartInteract();
for (let missingVariable of this.missingVariables) { for (let missingVariable of this.missingVariables) {
localSmartInteract.addQuestions([{ localSmartInteract.addQuestions([
name: missingVariable, {
type: 'input', name: missingVariable,
default: (() => { type: 'input',
if (this.defaultVariables && this.defaultVariables[missingVariable]) { default: (() => {
return this.defaultVariables[missingVariable] if (this.defaultVariables && this.defaultVariables[missingVariable]) {
} else { return this.defaultVariables[missingVariable];
return 'undefined variable' } else {
} return 'undefined variable';
})(), }
message: `What is the value of ${missingVariable}?` })(),
}]) message: `What is the value of ${missingVariable}?`
}
]);
} }
let answerBucket = await localSmartInteract.runQueue() let answerBucket = await localSmartInteract.runQueue();
answerBucket.answerMap.forEach(async answer => { answerBucket.answerMap.forEach(async answer => {
await helpers.deepAddToObject(this.suppliedVariables, answer.name, answer.value) await helpers.deepAddToObject(this.suppliedVariables, answer.name, answer.value);
}) });
} }
async writeToDisk (destinationDirArg) { async writeToDisk(destinationDirArg) {
let smartfileArrayToWrite = plugins.lodash.cloneDeep(this.templateSmartfileArray) let smartfileArrayToWrite = this.templateSmartfileArray;
for (let smartfile of smartfileArrayToWrite) { for (let smartfile of smartfileArrayToWrite) {
// render the template // render the template
let template = await plugins.smarthbs.getTemplateForString( let template = await plugins.smarthbs.getTemplateForString(smartfile.contents.toString());
smartfile.contents.toString() let renderedTemplateString = template(this.suppliedVariables);
)
let renderedTemplateString = template(this.suppliedVariables)
// handle frontmatter // handle frontmatter
let parsedTemplate = plugins.smartfm.parse(renderedTemplateString) const smartfmInstance = new plugins.smartfm.Smartfm({
fmType: "yaml"
});
let parsedTemplate = smartfmInstance.parse(renderedTemplateString) as any;
if (parsedTemplate.data.fileName) { if (parsedTemplate.data.fileName) {
smartfile.updateFileName(parsedTemplate.data.fileName) smartfile.updateFileName(parsedTemplate.data.fileName);
} }
smartfile.contents = Buffer.from(parsedTemplate.content) smartfile.contents = Buffer.from(parsedTemplate.content);
} }
await plugins.smartfile.memory.smartfileArrayToFs(smartfileArrayToWrite, destinationDirArg) await plugins.smartfile.memory.smartfileArrayToFs(smartfileArrayToWrite, destinationDirArg);
} }
/** /**
* finds all variables in a Template in as string * finds all variables in a Template in as string
* e.g. myobject.someKey and myobject.someOtherKey * e.g. myobject.someKey and myobject.someOtherKey
*/ */
private async _findVariablesInTemplate () { private async _findVariablesInTemplate() {
let templateVariables: string[] = [] let templateVariables: string[] = [];
for (let templateSmartfile of this.templateSmartfileArray) { for (let templateSmartfile of this.templateSmartfileArray) {
let localTemplateVariables = await plugins.smarthbs.findVarsInHbsString(templateSmartfile.contents.toString()) let localTemplateVariables = await plugins.smarthbs.findVarsInHbsString(
templateVariables = plugins.lodash.concat(templateVariables, localTemplateVariables) templateSmartfile.contents.toString()
);
templateVariables = [...templateVariables, ...localTemplateVariables];
} }
templateVariables = plugins.lodash.uniq(templateVariables) templateVariables = templateVariables.filter((value, index, self) => {
return self.indexOf(value) === index;
});
} }
/** /**
* checks if supplied Variables satisfy the template * checks if supplied Variables satisfy the template
*/ */
private async _checkSuppliedVariables () { private async _checkSuppliedVariables() {
let missingVars: string[] = [] let missingVars: string[] = [];
for (let templateSmartfile of this.templateSmartfileArray) { for (let templateSmartfile of this.templateSmartfileArray) {
let localMissingVars = await plugins.smarthbs.checkVarsSatisfaction( let localMissingVars = await plugins.smarthbs.checkVarsSatisfaction(
templateSmartfile.contents.toString(), templateSmartfile.contents.toString(),
this.suppliedVariables this.suppliedVariables
) );
missingVars = plugins.lodash.concat(missingVars, localMissingVars) missingVars = [...missingVars, ...localMissingVars];
} }
missingVars = plugins.lodash.uniq(missingVars) missingVars = missingVars.filter((value, index, self) => {
return missingVars return self.indexOf(value) === index;
});
return missingVars;
} }
/** /**
@ -129,18 +139,18 @@ export class ScafTemplate {
* >> - yourKey: * >> - yourKey:
* >> - yourDeeperKey: yourValue * >> - yourDeeperKey: yourValue
*/ */
private async _checkDefaultVariables () { private async _checkDefaultVariables() {
let defaultsSmartfile = this.templateSmartfileArray.filter(smartfileArg => { let defaultsSmartfile = this.templateSmartfileArray.filter(smartfileArg => {
return smartfileArg.parsedPath.base === 'defaults.yml' return smartfileArg.parsedPath.base === 'defaults.yml';
})[0] })[0];
if (defaultsSmartfile) { if (defaultsSmartfile) {
let defaultObject = await plugins.smartyaml.yamlStringToObject( let defaultObject = await plugins.smartyaml.yamlStringToObject(
defaultsSmartfile.contents.toString() defaultsSmartfile.contents.toString()
) );
this.defaultVariables = defaultObject this.defaultVariables = defaultObject;
} else { } else {
this.defaultVariables = {} this.defaultVariables = {};
} }
} }
} }

View File

@ -1,33 +1,33 @@
import * as plugins from './smartscaf.plugins' import * as plugins from './smartscaf.plugins';
/** /**
* adds a variable in string dot notation to an already more or less expanded object * adds a variable in string dot notation to an already more or less expanded object
*/ */
export let deepAddToObject = async (objectArg, varStringArg: string, valueArg: string) => { export let deepAddToObject = async (objectArg, varStringArg: string, valueArg: string) => {
let varNamesArray = varStringArg.split('.') let varNamesArray = varStringArg.split('.');
let referencePointer = objectArg let referencePointer = objectArg;
for (let i = 0; i !== varNamesArray.length; i++) { for (let i = 0; i !== varNamesArray.length; i++) {
let varName = varNamesArray[i] let varName = varNamesArray[i];
// is there a next variable ? // is there a next variable ?
let varNameNext: string = (() => { let varNameNext: string = (() => {
if (varNamesArray[i + 1]) { if (varNamesArray[i + 1]) {
return varNamesArray[i + 1] return varNamesArray[i + 1];
} }
return null return null;
})() })();
// build the tree in suppliedVariables // build the tree in suppliedVariables
if (!referencePointer[varName] && !varNameNext) { if (!referencePointer[varName] && !varNameNext) {
referencePointer[varName] = valueArg referencePointer[varName] = valueArg;
referencePointer = null referencePointer = null;
} else if (!referencePointer[varName] && varNameNext) { } else if (!referencePointer[varName] && varNameNext) {
referencePointer[varName] = {} referencePointer[varName] = {};
referencePointer = referencePointer[varName] referencePointer = referencePointer[varName];
} else if (referencePointer[varName] && varNameNext) { } else if (referencePointer[varName] && varNameNext) {
referencePointer = referencePointer[varName] referencePointer = referencePointer[varName];
} else { } else {
throw new Error('Something is strange!') throw new Error('Something is strange!');
} }
} }
} };

View File

@ -1,20 +1,9 @@
import 'typings-global' import * as path from 'path';
import * as lodash from 'lodash' import * as smartfile from '@pushrocks/smartfile';
import * as path from 'path' import * as smartfm from '@pushrocks/smartfm';
import * as smartfile from 'smartfile' import * as smarthbs from '@pushrocks/smarthbs';
import * as smartfm from 'smartfm' import * as smartinteract from '@pushrocks/smartinteract';
import * as smarthbs from 'smarthbs' import * as smartq from '@pushrocks/smartpromise';
import * as smartinteract from 'smartinteract' import * as smartyaml from '@pushrocks/smartyaml';
import * as smartq from 'smartq'
import * as smartyaml from 'smartyaml'
export { export { path, smartfile, smartfm, smarthbs, smartinteract, smartq, smartyaml };
lodash,
path,
smartfile,
smartfm,
smarthbs,
smartinteract,
smartq,
smartyaml
}

1226
yarn.lock

File diff suppressed because it is too large Load Diff