diff --git a/dist/index.d.ts b/dist/index.d.ts index 2fcde84..d529327 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,18 +1,2 @@ -/** - * the main interface npmextra functions work with - */ -export interface IDataFor { - toolName: string; - defaultSettings?: any; - cwd?: string; -} -/** - * gets you the configuration data for - * @executes SYNC - */ -export declare let dataFor: (optionsArg: IDataFor) => IOptions; -export declare let dataForExists: (optionsArg: IDataFor) => boolean; -/** - * tells you if a configfile is present - */ -export declare let configFilePresent: (cwdArg: string) => boolean; +export * from './npmextra.classes.npmextra'; +export * from './npmextra.classes.keyvaluestore'; diff --git a/dist/index.js b/dist/index.js index 29ce10f..d40c25a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,80 +1,7 @@ "use strict"; -const plugins = require("./npmextra.plugins"); -const paths = require("./npmextra.paths"); -/** - * gets lookupPath - */ -let getLookupPath = (cwdArg) => { - if (cwdArg) { - let cwdResolved = plugins.path.resolve(cwdArg); - return plugins.path.join(cwdResolved, 'npmextra.json'); - } - else { - return paths.configFile; - } - ; -}; -/** - * 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= \ No newline at end of file +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +__export(require("./npmextra.classes.npmextra")); +__export(require("./npmextra.classes.keyvaluestore")); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaURBQTJDO0FBQzNDLHNEQUFnRCJ9 \ No newline at end of file diff --git a/dist/npmextra.classes.keyValueStore.js b/dist/npmextra.classes.keyValueStore.js index c36c07c..c4b0f59 100644 --- a/dist/npmextra.classes.keyValueStore.js +++ b/dist/npmextra.classes.keyValueStore.js @@ -1,7 +1,12 @@ "use strict"; +class KeyValueStore { + constructor(optionsArg) { + } +} +exports.KeyValueStore = KeyValueStore; /** - * reads a keyValueFile from disk - */ +* reads a keyValueFile from disk +*/ let kvRead = () => { }; /** @@ -14,9 +19,4 @@ let kvWrite = () => { */ let kevWipe = () => { }; -class KeyValueStore { - constructor(optionsArg) { - } -} -exports.KeyValueStore = KeyValueStore; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuY2xhc3Nlcy5rZXlWYWx1ZVN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZXh0cmEuY2xhc3Nlcy5rZXlWYWx1ZVN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFJQTs7R0FFRztBQUNILElBQUksTUFBTSxHQUFHO0FBRWIsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLE9BQU8sR0FBRztBQUVkLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxPQUFPLEdBQUc7QUFFZCxDQUFDLENBQUE7QUFFRDtJQUNJLFlBQVksVUFFWDtJQUVELENBQUM7Q0FDSjtBQU5ELHNDQU1DIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuY2xhc3Nlcy5rZXl2YWx1ZXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZXh0cmEuY2xhc3Nlcy5rZXl2YWx1ZXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQTtJQUNJLFlBQVksVUFFWDtJQUVELENBQUM7Q0FBQTtBQUxMLHNDQUtLO0FBQ0Q7O0VBRUQ7QUFDSCxJQUFJLE1BQU0sR0FBQztBQUVYLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxPQUFPLEdBQUM7QUFFWixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksT0FBTyxHQUFDO0FBRVosQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/dist/npmextra.classes.npmextra.d.ts b/dist/npmextra.classes.npmextra.d.ts new file mode 100644 index 0000000..d53d6b8 --- /dev/null +++ b/dist/npmextra.classes.npmextra.d.ts @@ -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(); +} diff --git a/dist/npmextra.classes.npmextra.js b/dist/npmextra.classes.npmextra.js new file mode 100644 index 0000000..5b41676 --- /dev/null +++ b/dist/npmextra.classes.npmextra.js @@ -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== \ No newline at end of file diff --git a/test/test.js b/test/test.js index 7296bbe..4b744aa 100644 --- a/test/test.js +++ b/test/test.js @@ -1,28 +1,27 @@ "use strict"; require("typings-test"); -const path = require("path"); const should = require("should"); const npmExtra = require("../dist/index"); +let testNpmextra; describe('npmextra', function () { - it('should state wether a npmextra.json exists', function () { - should(npmExtra.configFilePresent('./test/')).be.true(); + it('should create a new Npmtextra instance', function () { + testNpmextra = new npmExtra.Npmextra('./test/'); + should(testNpmextra).be.instanceof(npmExtra.Npmextra); }); - it('should read a config file', function () { - let testData = npmExtra.dataFor({ - toolName: 'testTool', - defaultSettings: { someKey2: 'someValue2' }, - cwd: path.join(process.cwd(), 'test/') - }); + it('should state wether a npmextra.json exists', function () { + should(testNpmextra.npmextraJsonExists).be.true(); + }); + 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'); }); it('should read a config file', function () { - let testData = npmExtra.dataFor({ - toolName: 'testTool', - defaultSettings: { someKey2: 'someValue2' }, - cwd: path.join(process.cwd(), 'test/') + let testData = testNpmextra.dataFor('testTool', { + someKey2: 'someValue2' }); should(testData).have.ownProperty('someKey2'); should(testData.testValue).equal(2); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQiw2QkFBNkI7QUFDN0IsaUNBQWdDO0FBSWhDLDBDQUEwQztBQUUxQyxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2hCLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtRQUM3QyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzNELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJCQUEyQixFQUFDO1FBQzNCLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDNUIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQztZQUN6QyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUMsT0FBTyxDQUFDO1NBQ3hDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2pELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJCQUEyQixFQUFDO1FBQzNCLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDNUIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQztZQUN6QyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUMsT0FBTyxDQUFDO1NBQ3hDLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUEifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUVyQixpQ0FBZ0M7QUFFaEMsMENBQTBDO0FBRTFDLElBQUksWUFBK0IsQ0FBQTtBQUVuQyxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2hCLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUN6QyxZQUFZLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN6RCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtRQUM3QyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLHlFQUF5RSxFQUFDO1FBQ3pFLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUE7UUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNqRCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQywyQkFBMkIsRUFBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUMvQixVQUFVLEVBQ1Y7WUFDSSxRQUFRLEVBQUUsWUFBWTtTQUN6QixDQUNKLENBQUE7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index b35dc96..259647a 100644 --- a/test/test.ts +++ b/test/test.ts @@ -2,28 +2,30 @@ import 'typings-test' import path = require('path') import * as should from 'should' - - import npmExtra = require('../dist/index') +let testNpmextra: npmExtra.Npmextra + describe('npmextra',function(){ - it('should state wether a npmextra.json exists', function() { - should(npmExtra.configFilePresent('./test/')).be.true() + it('should create a new Npmtextra instance', function(){ + testNpmextra = new npmExtra.Npmextra('./test/') + should(testNpmextra).be.instanceof(npmExtra.Npmextra) }) - it('should read a config file',function(){ - let testData = npmExtra.dataFor({ - toolName: 'testTool', - defaultSettings: {someKey2: 'someValue2'}, - cwd: path.join(process.cwd(),'./test/') - }) + it('should state wether a npmextra.json exists', function() { + should(testNpmextra.npmextraJsonExists).be.true() + }) + 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') }) it('should read a config file',function(){ - let testData = npmExtra.dataFor({ - toolName: 'testTool', - defaultSettings: {someKey2: 'someValue2'}, - cwd: path.join(process.cwd(),'test/') - }) + let testData = testNpmextra.dataFor( + 'testTool', + { + someKey2: 'someValue2' + } + ) should(testData).have.ownProperty('someKey2') should(testData.testValue).equal(2) }) diff --git a/ts/npmextra.classes.keyvalue.ts b/ts/npmextra.classes.keyvaluestore.ts similarity index 83% rename from ts/npmextra.classes.keyvalue.ts rename to ts/npmextra.classes.keyvaluestore.ts index 5461132..32ea47d 100644 --- a/ts/npmextra.classes.keyvalue.ts +++ b/ts/npmextra.classes.keyvaluestore.ts @@ -2,26 +2,7 @@ import * as plugins from './npmextra.plugins' 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 { constructor(optionsArg: { @@ -29,4 +10,24 @@ export class KeyValueStore { }) { } + /** + * 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 () { + +} } diff --git a/ts/npmextra.classes.npmextra.ts b/ts/npmextra.classes.npmextra.ts index 2ed8e75..e7e1ba9 100644 --- a/ts/npmextra.classes.npmextra.ts +++ b/ts/npmextra.classes.npmextra.ts @@ -2,87 +2,67 @@ import * as plugins from './npmextra.plugins' import * as paths from './npmextra.paths' /** - * the main interface npmextra functions work with + * Npmextra class allows easy configuration of tools */ -export interface IDataFor { - toolName: string - defaultSettings? - cwd?: string -} +export class Npmextra { + cwd: string + lookupPath: string + npmextraJsonExists: boolean + npmextraJsonData: boolean -/** - * gets lookupPath - */ -let getLookupPath = (cwdArg: string) => { - if (cwdArg) { - let cwdResolved = plugins.path.resolve(cwdArg) - return plugins.path.join(cwdResolved, 'npmextra.json') - } else { - return paths.configFile - }; -} - -/** - * gets you the configuration data for - * @executes SYNC - */ -export let dataFor = (optionsArg: IDataFor): IOptions => { - - // make supplied defaultSettings and npmextra.json overlap - 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] + /** + * creates instance of Npmextra + */ + constructor(cwdArg?: string) { + if (cwdArg) { + this.cwd = cwdArg } else { - plugins.beautylog.error(`There is no data for ${optionsArg.toolName}`) - return undefined + this.cwd = paths.cwd } - } else { - return allData + this.checkLookupPath() + this.checkNpmextraJsonExists() + this.checkNpmextraJsonData() } -} -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 + /** + * 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 { - return false + 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 + */ + private checkLookupPath() { + if (this.cwd) { + this.lookupPath = plugins.path.join(this.cwd, 'npmextra.json') + } else { + this.lookupPath = paths.configFile + }; + } + + /** + * get npmextraJsonData + */ + private checkNpmextraJsonData() { + if (this.npmextraJsonExists) { + this.npmextraJsonData = plugins.smartfile.fs.toObjectSync(this.lookupPath) } - } 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) }