added new NpmExtra class
This commit is contained in:
parent
16150541b0
commit
2911dd4972
20
dist/index.d.ts
vendored
20
dist/index.d.ts
vendored
@ -1,18 +1,2 @@
|
|||||||
/**
|
export * from './npmextra.classes.npmextra';
|
||||||
* the main interface npmextra functions work with
|
export * from './npmextra.classes.keyvaluestore';
|
||||||
*/
|
|
||||||
export interface IDataFor {
|
|
||||||
toolName: string;
|
|
||||||
defaultSettings?: any;
|
|
||||||
cwd?: string;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* gets you the configuration data for
|
|
||||||
* @executes SYNC
|
|
||||||
*/
|
|
||||||
export declare let dataFor: <IOptions>(optionsArg: IDataFor) => IOptions;
|
|
||||||
export declare let dataForExists: (optionsArg: IDataFor) => boolean;
|
|
||||||
/**
|
|
||||||
* tells you if a configfile is present
|
|
||||||
*/
|
|
||||||
export declare let configFilePresent: (cwdArg: string) => boolean;
|
|
||||||
|
83
dist/index.js
vendored
83
dist/index.js
vendored
@ -1,80 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const plugins = require("./npmextra.plugins");
|
function __export(m) {
|
||||||
const paths = require("./npmextra.paths");
|
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||||
/**
|
|
||||||
* gets lookupPath
|
|
||||||
*/
|
|
||||||
let getLookupPath = (cwdArg) => {
|
|
||||||
if (cwdArg) {
|
|
||||||
let cwdResolved = plugins.path.resolve(cwdArg);
|
|
||||||
return plugins.path.join(cwdResolved, 'npmextra.json');
|
|
||||||
}
|
}
|
||||||
else {
|
__export(require("./npmextra.classes.npmextra"));
|
||||||
return paths.configFile;
|
__export(require("./npmextra.classes.keyvaluestore"));
|
||||||
}
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaURBQTJDO0FBQzNDLHNEQUFnRCJ9
|
||||||
;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* gets you the configuration data for
|
|
||||||
* @executes SYNC
|
|
||||||
*/
|
|
||||||
exports.dataFor = (optionsArg) => {
|
|
||||||
// handle default settings
|
|
||||||
if (typeof optionsArg.toolName !== undefined
|
|
||||||
&& typeof optionsArg.defaultSettings !== undefined) {
|
|
||||||
let newDefaultOptions = {};
|
|
||||||
newDefaultOptions[optionsArg.toolName] = optionsArg.defaultSettings;
|
|
||||||
optionsArg.defaultSettings = newDefaultOptions;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
// set lookup path
|
|
||||||
let lookupPath = getLookupPath(optionsArg.cwd);
|
|
||||||
// get allData
|
|
||||||
let allData;
|
|
||||||
if (exports.configFilePresent(lookupPath)) {
|
|
||||||
allData = plugins.smartfile.fs.toObjectSync(lookupPath);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
plugins.beautylog.warn(`${lookupPath} is missing!`);
|
|
||||||
allData = {};
|
|
||||||
}
|
|
||||||
;
|
|
||||||
// assign all data
|
|
||||||
allData = plugins.lodash.merge({}, optionsArg.defaultSettings, allData);
|
|
||||||
if (optionsArg.toolName) {
|
|
||||||
if (allData[optionsArg.toolName]) {
|
|
||||||
return allData[optionsArg.toolName];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
plugins.beautylog.error(`There is no data for ${optionsArg.toolName}`);
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return allData;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.dataForExists = (optionsArg) => {
|
|
||||||
// set lookup path
|
|
||||||
let lookupPath = getLookupPath(optionsArg.cwd);
|
|
||||||
if (exports.configFilePresent(optionsArg.cwd)) {
|
|
||||||
let allData = plugins.smartfile.fs.toObjectSync(lookupPath);
|
|
||||||
if (allData[optionsArg.toolName]) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* tells you if a configfile is present
|
|
||||||
*/
|
|
||||||
exports.configFilePresent = (cwdArg) => {
|
|
||||||
let lookupPath = getLookupPath(cwdArg);
|
|
||||||
return plugins.smartfile.fs.fileExistsSync(lookupPath);
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOENBQTZDO0FBQzdDLDBDQUF5QztBQVd6Qzs7R0FFRztBQUNILElBQUksYUFBYSxHQUFHLENBQUMsTUFBYztJQUMvQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1QsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQTtJQUMzQixDQUFDO0lBQUEsQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNRLFFBQUEsT0FBTyxHQUFHLENBQVcsVUFBb0I7SUFFaEQsMEJBQTBCO0lBQzFCLEVBQUUsQ0FBQyxDQUNDLE9BQU8sVUFBVSxDQUFDLFFBQVEsS0FBSyxTQUFTO1dBQ3JDLE9BQU8sVUFBVSxDQUFDLGVBQWUsS0FBSyxTQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNDLElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFBO1FBQzFCLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFBO1FBQ25FLFVBQVUsQ0FBQyxlQUFlLEdBQUcsaUJBQWlCLENBQUE7SUFDbEQsQ0FBQztJQUFBLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsSUFBSSxVQUFVLEdBQVcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUV0RCxjQUFjO0lBQ2QsSUFBSSxPQUFPLENBQUE7SUFDWCxFQUFFLENBQUMsQ0FBQyx5QkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsY0FBYyxDQUFDLENBQUE7UUFDbkQsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNoQixDQUFDO0lBQUEsQ0FBQztJQUVGLGtCQUFrQjtJQUNsQixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdkUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLE1BQU0sQ0FBQyxTQUFTLENBQUE7UUFDcEIsQ0FBQztJQUNMLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUE7SUFDbEIsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUVVLFFBQUEsYUFBYSxHQUFHLENBQUMsVUFBb0I7SUFDNUMsa0JBQWtCO0lBQ2xCLElBQUksVUFBVSxHQUFXLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdEQsRUFBRSxDQUFDLENBQUMseUJBQWlCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDM0QsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUNmLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sQ0FBQyxLQUFLLENBQUE7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE1BQU0sQ0FBQyxLQUFLLENBQUE7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ1EsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLE1BQWM7SUFDMUMsSUFBSSxVQUFVLEdBQVcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDMUQsQ0FBQyxDQUFBIn0=
|
|
12
dist/npmextra.classes.keyValueStore.js
vendored
12
dist/npmextra.classes.keyValueStore.js
vendored
@ -1,4 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
class KeyValueStore {
|
||||||
|
constructor(optionsArg) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.KeyValueStore = KeyValueStore;
|
||||||
/**
|
/**
|
||||||
* reads a keyValueFile from disk
|
* reads a keyValueFile from disk
|
||||||
*/
|
*/
|
||||||
@ -14,9 +19,4 @@ let kvWrite = () => {
|
|||||||
*/
|
*/
|
||||||
let kevWipe = () => {
|
let kevWipe = () => {
|
||||||
};
|
};
|
||||||
class KeyValueStore {
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuY2xhc3Nlcy5rZXl2YWx1ZXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZXh0cmEuY2xhc3Nlcy5rZXl2YWx1ZXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQTtJQUNJLFlBQVksVUFFWDtJQUVELENBQUM7Q0FBQTtBQUxMLHNDQUtLO0FBQ0Q7O0VBRUQ7QUFDSCxJQUFJLE1BQU0sR0FBQztBQUVYLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxPQUFPLEdBQUM7QUFFWixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksT0FBTyxHQUFDO0FBRVosQ0FBQyxDQUFBIn0=
|
||||||
constructor(optionsArg) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.KeyValueStore = KeyValueStore;
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuY2xhc3Nlcy5rZXlWYWx1ZVN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZXh0cmEuY2xhc3Nlcy5rZXlWYWx1ZVN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFJQTs7R0FFRztBQUNILElBQUksTUFBTSxHQUFHO0FBRWIsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLE9BQU8sR0FBRztBQUVkLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxPQUFPLEdBQUc7QUFFZCxDQUFDLENBQUE7QUFFRDtJQUNJLFlBQVksVUFFWDtJQUVELENBQUM7Q0FDSjtBQU5ELHNDQU1DIn0=
|
|
29
dist/npmextra.classes.npmextra.d.ts
vendored
Normal file
29
dist/npmextra.classes.npmextra.d.ts
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/**
|
||||||
|
* Npmextra class allows easy configuration of tools
|
||||||
|
*/
|
||||||
|
export declare class Npmextra {
|
||||||
|
cwd: string;
|
||||||
|
lookupPath: string;
|
||||||
|
npmextraJsonExists: boolean;
|
||||||
|
npmextraJsonData: boolean;
|
||||||
|
/**
|
||||||
|
* creates instance of Npmextra
|
||||||
|
*/
|
||||||
|
constructor(cwdArg?: string);
|
||||||
|
/**
|
||||||
|
* merges the supplied options with the ones from npmextra.json
|
||||||
|
*/
|
||||||
|
dataFor(toolnameArg: string, defaultOptionsArg: any): any;
|
||||||
|
/**
|
||||||
|
* checks if the JSON exists
|
||||||
|
*/
|
||||||
|
private checkNpmextraJsonExists();
|
||||||
|
/**
|
||||||
|
* gets lookupPath
|
||||||
|
*/
|
||||||
|
private checkLookupPath();
|
||||||
|
/**
|
||||||
|
* get npmextraJsonData
|
||||||
|
*/
|
||||||
|
private checkNpmextraJsonData();
|
||||||
|
}
|
64
dist/npmextra.classes.npmextra.js
vendored
Normal file
64
dist/npmextra.classes.npmextra.js
vendored
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
"use strict";
|
||||||
|
const plugins = require("./npmextra.plugins");
|
||||||
|
const paths = require("./npmextra.paths");
|
||||||
|
/**
|
||||||
|
* Npmextra class allows easy configuration of tools
|
||||||
|
*/
|
||||||
|
class Npmextra {
|
||||||
|
/**
|
||||||
|
* creates instance of Npmextra
|
||||||
|
*/
|
||||||
|
constructor(cwdArg) {
|
||||||
|
if (cwdArg) {
|
||||||
|
this.cwd = cwdArg;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.cwd = paths.cwd;
|
||||||
|
}
|
||||||
|
this.checkLookupPath();
|
||||||
|
this.checkNpmextraJsonExists();
|
||||||
|
this.checkNpmextraJsonData();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* merges the supplied options with the ones from npmextra.json
|
||||||
|
*/
|
||||||
|
dataFor(toolnameArg, defaultOptionsArg) {
|
||||||
|
let npmextraToolOptions;
|
||||||
|
if (this.npmextraJsonData[toolnameArg]) {
|
||||||
|
npmextraToolOptions = this.npmextraJsonData[toolnameArg];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
npmextraToolOptions = {};
|
||||||
|
}
|
||||||
|
let mergedOptions = plugins.lodash.merge({}, defaultOptionsArg, npmextraToolOptions);
|
||||||
|
return mergedOptions;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* checks if the JSON exists
|
||||||
|
*/
|
||||||
|
checkNpmextraJsonExists() {
|
||||||
|
this.npmextraJsonExists = plugins.smartfile.fs.fileExistsSync(this.lookupPath);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* gets lookupPath
|
||||||
|
*/
|
||||||
|
checkLookupPath() {
|
||||||
|
if (this.cwd) {
|
||||||
|
this.lookupPath = plugins.path.join(this.cwd, 'npmextra.json');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.lookupPath = paths.configFile;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* get npmextraJsonData
|
||||||
|
*/
|
||||||
|
checkNpmextraJsonData() {
|
||||||
|
if (this.npmextraJsonExists) {
|
||||||
|
this.npmextraJsonData = plugins.smartfile.fs.toObjectSync(this.lookupPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Npmextra = Npmextra;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuY2xhc3Nlcy5ucG1leHRyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWV4dHJhLmNsYXNzZXMubnBtZXh0cmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhDQUE2QztBQUM3QywwQ0FBeUM7QUFFekM7O0dBRUc7QUFDSDtJQU1JOztPQUVHO0lBQ0gsWUFBWSxNQUFlO1FBQ3ZCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDVCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUE7UUFDeEIsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsV0FBbUIsRUFBRSxpQkFBc0I7UUFDL0MsSUFBSSxtQkFBbUIsQ0FBQTtRQUN2QixFQUFFLENBQUEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixtQkFBbUIsR0FBRyxFQUFFLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sQ0FBQyxhQUFhLENBQUE7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2xGLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDbkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDbEUsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQ3RDLENBQUM7UUFBQSxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCO1FBQ3pCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDOUUsQ0FBQztJQUNMLENBQUM7Q0FFSjtBQTdERCw0QkE2REMifQ==
|
25
test/test.js
25
test/test.js
@ -1,28 +1,27 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-test");
|
require("typings-test");
|
||||||
const path = require("path");
|
|
||||||
const should = require("should");
|
const should = require("should");
|
||||||
const npmExtra = require("../dist/index");
|
const npmExtra = require("../dist/index");
|
||||||
|
let testNpmextra;
|
||||||
describe('npmextra', function () {
|
describe('npmextra', function () {
|
||||||
|
it('should create a new Npmtextra instance', function () {
|
||||||
|
testNpmextra = new npmExtra.Npmextra('./test/');
|
||||||
|
should(testNpmextra).be.instanceof(npmExtra.Npmextra);
|
||||||
|
});
|
||||||
it('should state wether a npmextra.json exists', function () {
|
it('should state wether a npmextra.json exists', function () {
|
||||||
should(npmExtra.configFilePresent('./test/')).be.true();
|
should(testNpmextra.npmextraJsonExists).be.true();
|
||||||
});
|
|
||||||
it('should read a config file', function () {
|
|
||||||
let testData = npmExtra.dataFor({
|
|
||||||
toolName: 'testTool',
|
|
||||||
defaultSettings: { someKey2: 'someValue2' },
|
|
||||||
cwd: path.join(process.cwd(), 'test/')
|
|
||||||
});
|
});
|
||||||
|
it('should pass through default value, if not overriden by config from file', function () {
|
||||||
|
let testData = testNpmextra.dataFor('testTool', { someKey2: 'someValue2' });
|
||||||
|
console.log(testData);
|
||||||
should(testData).have.ownProperty('someKey2');
|
should(testData).have.ownProperty('someKey2');
|
||||||
});
|
});
|
||||||
it('should read a config file', function () {
|
it('should read a config file', function () {
|
||||||
let testData = npmExtra.dataFor({
|
let testData = testNpmextra.dataFor('testTool', {
|
||||||
toolName: 'testTool',
|
someKey2: 'someValue2'
|
||||||
defaultSettings: { someKey2: 'someValue2' },
|
|
||||||
cwd: path.join(process.cwd(), 'test/')
|
|
||||||
});
|
});
|
||||||
should(testData).have.ownProperty('someKey2');
|
should(testData).have.ownProperty('someKey2');
|
||||||
should(testData.testValue).equal(2);
|
should(testData.testValue).equal(2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQiw2QkFBNkI7QUFDN0IsaUNBQWdDO0FBSWhDLDBDQUEwQztBQUUxQyxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2hCLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtRQUM3QyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzNELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJCQUEyQixFQUFDO1FBQzNCLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDNUIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQztZQUN6QyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUMsT0FBTyxDQUFDO1NBQ3hDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2pELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJCQUEyQixFQUFDO1FBQzNCLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDNUIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQztZQUN6QyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUMsT0FBTyxDQUFDO1NBQ3hDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUEifQ==
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUVyQixpQ0FBZ0M7QUFFaEMsMENBQTBDO0FBRTFDLElBQUksWUFBK0IsQ0FBQTtBQUVuQyxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2hCLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUN6QyxZQUFZLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN6RCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtRQUM3QyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLHlFQUF5RSxFQUFDO1FBQ3pFLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUE7UUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNqRCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQywyQkFBMkIsRUFBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUMvQixVQUFVLEVBQ1Y7WUFDSSxRQUFRLEVBQUUsWUFBWTtTQUN6QixDQUNKLENBQUE7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0=
|
30
test/test.ts
30
test/test.ts
@ -2,28 +2,30 @@ import 'typings-test'
|
|||||||
import path = require('path')
|
import path = require('path')
|
||||||
import * as should from 'should'
|
import * as should from 'should'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import npmExtra = require('../dist/index')
|
import npmExtra = require('../dist/index')
|
||||||
|
|
||||||
|
let testNpmextra: npmExtra.Npmextra
|
||||||
|
|
||||||
describe('npmextra',function(){
|
describe('npmextra',function(){
|
||||||
|
it('should create a new Npmtextra instance', function(){
|
||||||
|
testNpmextra = new npmExtra.Npmextra('./test/')
|
||||||
|
should(testNpmextra).be.instanceof(npmExtra.Npmextra)
|
||||||
|
})
|
||||||
it('should state wether a npmextra.json exists', function() {
|
it('should state wether a npmextra.json exists', function() {
|
||||||
should(npmExtra.configFilePresent('./test/')).be.true()
|
should(testNpmextra.npmextraJsonExists).be.true()
|
||||||
})
|
|
||||||
it('should read a config file',function(){
|
|
||||||
let testData = npmExtra.dataFor({
|
|
||||||
toolName: 'testTool',
|
|
||||||
defaultSettings: {someKey2: 'someValue2'},
|
|
||||||
cwd: path.join(process.cwd(),'./test/')
|
|
||||||
})
|
})
|
||||||
|
it('should pass through default value, if not overriden by config from file',function(){
|
||||||
|
let testData = testNpmextra.dataFor('testTool', {someKey2: 'someValue2'})
|
||||||
|
console.log(testData)
|
||||||
should(testData).have.ownProperty('someKey2')
|
should(testData).have.ownProperty('someKey2')
|
||||||
})
|
})
|
||||||
it('should read a config file',function(){
|
it('should read a config file',function(){
|
||||||
let testData = npmExtra.dataFor({
|
let testData = testNpmextra.dataFor(
|
||||||
toolName: 'testTool',
|
'testTool',
|
||||||
defaultSettings: {someKey2: 'someValue2'},
|
{
|
||||||
cwd: path.join(process.cwd(),'test/')
|
someKey2: 'someValue2'
|
||||||
})
|
}
|
||||||
|
)
|
||||||
should(testData).have.ownProperty('someKey2')
|
should(testData).have.ownProperty('someKey2')
|
||||||
should(testData.testValue).equal(2)
|
should(testData.testValue).equal(2)
|
||||||
})
|
})
|
||||||
|
@ -2,31 +2,32 @@ import * as plugins from './npmextra.plugins'
|
|||||||
|
|
||||||
export type keyValueStoreTypes = 'path' | 'gitProject'
|
export type keyValueStoreTypes = 'path' | 'gitProject'
|
||||||
|
|
||||||
/**
|
|
||||||
* reads a keyValueFile from disk
|
|
||||||
*/
|
|
||||||
let kvRead = () => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* writes a key value file to disk
|
|
||||||
*/
|
|
||||||
let kvWrite = () => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* wipes a key value store from disk
|
|
||||||
*/
|
|
||||||
let kevWipe = () => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export class KeyValueStore {
|
export class KeyValueStore {
|
||||||
constructor(optionsArg: {
|
constructor(optionsArg: {
|
||||||
type: keyValueStoreTypes
|
type: keyValueStoreTypes
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* reads a keyValueFile from disk
|
||||||
|
*/
|
||||||
|
let kvRead () {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* writes a key value file to disk
|
||||||
|
*/
|
||||||
|
let kvWrite () {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wipes a key value store from disk
|
||||||
|
*/
|
||||||
|
let kevWipe () {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,87 +2,67 @@ import * as plugins from './npmextra.plugins'
|
|||||||
import * as paths from './npmextra.paths'
|
import * as paths from './npmextra.paths'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the main interface npmextra functions work with
|
* Npmextra class allows easy configuration of tools
|
||||||
*/
|
*/
|
||||||
export interface IDataFor {
|
export class Npmextra {
|
||||||
toolName: string
|
cwd: string
|
||||||
defaultSettings?
|
lookupPath: string
|
||||||
cwd?: string
|
npmextraJsonExists: boolean
|
||||||
|
npmextraJsonData: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creates instance of Npmextra
|
||||||
|
*/
|
||||||
|
constructor(cwdArg?: string) {
|
||||||
|
if (cwdArg) {
|
||||||
|
this.cwd = cwdArg
|
||||||
|
} else {
|
||||||
|
this.cwd = paths.cwd
|
||||||
|
}
|
||||||
|
this.checkLookupPath()
|
||||||
|
this.checkNpmextraJsonExists()
|
||||||
|
this.checkNpmextraJsonData()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* merges the supplied options with the ones from npmextra.json
|
||||||
|
*/
|
||||||
|
dataFor(toolnameArg: string, defaultOptionsArg: any) {
|
||||||
|
let npmextraToolOptions
|
||||||
|
if(this.npmextraJsonData[toolnameArg]) {
|
||||||
|
npmextraToolOptions = this.npmextraJsonData[toolnameArg]
|
||||||
|
} else {
|
||||||
|
npmextraToolOptions = {}
|
||||||
|
}
|
||||||
|
let mergedOptions = plugins.lodash.merge({}, defaultOptionsArg, npmextraToolOptions)
|
||||||
|
return mergedOptions
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* checks if the JSON exists
|
||||||
|
*/
|
||||||
|
private checkNpmextraJsonExists() {
|
||||||
|
this.npmextraJsonExists = plugins.smartfile.fs.fileExistsSync(this.lookupPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets lookupPath
|
* gets lookupPath
|
||||||
*/
|
*/
|
||||||
let getLookupPath = (cwdArg: string) => {
|
private checkLookupPath() {
|
||||||
if (cwdArg) {
|
if (this.cwd) {
|
||||||
let cwdResolved = plugins.path.resolve(cwdArg)
|
this.lookupPath = plugins.path.join(this.cwd, 'npmextra.json')
|
||||||
return plugins.path.join(cwdResolved, 'npmextra.json')
|
|
||||||
} else {
|
} else {
|
||||||
return paths.configFile
|
this.lookupPath = paths.configFile
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets you the configuration data for
|
* get npmextraJsonData
|
||||||
* @executes SYNC
|
|
||||||
*/
|
*/
|
||||||
export let dataFor = <IOptions>(optionsArg: IDataFor): IOptions => {
|
private checkNpmextraJsonData() {
|
||||||
|
if (this.npmextraJsonExists) {
|
||||||
// make supplied defaultSettings and npmextra.json overlap
|
this.npmextraJsonData = plugins.smartfile.fs.toObjectSync(this.lookupPath)
|
||||||
if (
|
|
||||||
typeof optionsArg.toolName !== undefined
|
|
||||||
&& typeof optionsArg.defaultSettings !== undefined
|
|
||||||
) {
|
|
||||||
let newDefaultOptions = {}
|
|
||||||
newDefaultOptions[optionsArg.toolName] = optionsArg.defaultSettings
|
|
||||||
optionsArg.defaultSettings = newDefaultOptions
|
|
||||||
};
|
|
||||||
|
|
||||||
// set lookup path
|
|
||||||
let lookupPath: string = getLookupPath(optionsArg.cwd)
|
|
||||||
|
|
||||||
// get allData
|
|
||||||
let allData
|
|
||||||
if (configFilePresent(lookupPath)) {
|
|
||||||
allData = plugins.smartfile.fs.toObjectSync(getLookupPath(optionsArg.cwd))
|
|
||||||
} else {
|
|
||||||
plugins.beautylog.warn(`${lookupPath} is missing!`)
|
|
||||||
allData = {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// assign all data
|
|
||||||
allData = plugins.lodash.merge({}, optionsArg.defaultSettings, allData)
|
|
||||||
if (optionsArg.toolName) {
|
|
||||||
if (allData[optionsArg.toolName]) {
|
|
||||||
return allData[optionsArg.toolName]
|
|
||||||
} else {
|
|
||||||
plugins.beautylog.error(`There is no data for ${optionsArg.toolName}`)
|
|
||||||
return undefined
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return allData
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export let dataForExists = (optionsArg: IDataFor): boolean => {
|
|
||||||
// set lookup path
|
|
||||||
let lookupPath: string = getLookupPath(optionsArg.cwd)
|
|
||||||
if (configFilePresent(optionsArg.cwd)) {
|
|
||||||
let allData = plugins.smartfile.fs.toObjectSync(lookupPath)
|
|
||||||
if (allData[optionsArg.toolName]) {
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* tells you if a configfile is present
|
|
||||||
*/
|
|
||||||
export let configFilePresent = (cwdArg: string): boolean => {
|
|
||||||
let lookupPath: string = getLookupPath(cwdArg)
|
|
||||||
return plugins.smartfile.fs.fileExistsSync(lookupPath)
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user