Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
83108ce02d | |||
2911dd4972 | |||
16150541b0 | |||
002f3fc82d | |||
6925c2dbd0 | |||
156b64b699 | |||
77da229633 | |||
0cbea12067 | |||
e6b12b2c6d | |||
d8c37a8b95 | |||
3b83cfaaac | |||
febc3aa164 | |||
643fb6a6b7 | |||
51b734ef96 | |||
7d700f3285 | |||
4ee9c46b04 | |||
0357857448 | |||
ec56eb75c2 | |||
540e7610af | |||
ba822576b1 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
node_modules/
|
||||
coverage/
|
||||
docs/
|
||||
pages/
|
||||
public/
|
||||
|
@ -3,6 +3,7 @@ image: hosttoday/ht-docker-node:npmts
|
||||
stages:
|
||||
- test
|
||||
- release
|
||||
- page
|
||||
|
||||
testLEGACY:
|
||||
stage: test
|
||||
@ -33,3 +34,15 @@ release:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
|
||||
pages:
|
||||
image: hosttoday/ht-docker-node:npmpage
|
||||
stage: page
|
||||
script:
|
||||
- npmci command npmpage --host gitlab
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- public
|
45
README.md
45
README.md
@ -1,4 +1,47 @@
|
||||
# npmextra
|
||||
do more with npm
|
||||
do more with npm.
|
||||
|
||||
npmextra is a hub for a series of js tools that help writing, documenting and maintaining npm modules.
|
||||
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/npmextra)
|
||||
[](https://gitlab.com/pushrocks/npmextra)
|
||||
[](https://github.com/pushrocks/npmextra)
|
||||
[](https://pushrocks.gitlab.io/npmextra/)
|
||||
|
||||
## Status for master
|
||||
[](https://gitlab.com/pushrocks/npmextra/commits/master)
|
||||
[](https://gitlab.com/pushrocks/npmextra/commits/master)
|
||||
[](https://david-dm.org/pushrocks/npmextra)
|
||||
[](https://www.bithound.io/github/pushrocks/npmextra/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/npmextra)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Usage
|
||||
The main purpose of npmextra is to configure different tools using one npmextra.json. This way complex setups avoid additional complexity caused by too many configuration files.
|
||||
|
||||
npmextra.json
|
||||
```json
|
||||
{
|
||||
"sometool": {
|
||||
"defaultKey1": "awesomeValueFromConfig"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```typescript
|
||||
import * as npmextra from 'npmextra'
|
||||
|
||||
npmextra.dataFor({
|
||||
toolName:'sometool',
|
||||
defaultSettings: { // gets merged with whatever is in the configfile
|
||||
defaultKey1: 'defaultValue1', // so this will get overwritten with "awesomeValueFromConfig"
|
||||
defaultKey2: 'defaultValue2' // this one will pass through unaltered
|
||||
},
|
||||
cwd?: string // lets you specifiy a custom current working directory to look for the npmextra.json
|
||||
})
|
||||
```
|
||||
|
||||
[](https://push.rocks)
|
||||
|
8
dist/index.d.ts
vendored
8
dist/index.d.ts
vendored
@ -1,6 +1,2 @@
|
||||
export interface IDataFor {
|
||||
toolName: string;
|
||||
defaultSettings?: any;
|
||||
cwd?: string;
|
||||
}
|
||||
export declare let dataFor: (optionsArg: IDataFor) => any;
|
||||
export * from './npmextra.classes.npmextra';
|
||||
export * from './npmextra.classes.keyvaluestore';
|
||||
|
52
dist/index.js
vendored
52
dist/index.js
vendored
@ -1,47 +1,7 @@
|
||||
"use strict";
|
||||
const plugins = require("./npmextra.plugins");
|
||||
const paths = require("./npmextra.paths");
|
||||
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;
|
||||
if (optionsArg.cwd) {
|
||||
lookupPath = plugins.path.join(optionsArg.cwd, "npmextra.json");
|
||||
}
|
||||
else {
|
||||
lookupPath = paths.configFile;
|
||||
}
|
||||
;
|
||||
// get allData
|
||||
let allData;
|
||||
if (plugins.smartfile.fs.fileExistsSync(lookupPath)) {
|
||||
allData = plugins.smartfile.fs.toObjectSync(lookupPath);
|
||||
}
|
||||
else {
|
||||
plugins.beautylog.warn(`${lookupPath} is misssing!`);
|
||||
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;
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxPQUFPLFdBQU0sb0JBQ3pCLENBQUMsQ0FENEM7QUFDN0MsTUFBWSxLQUFLLFdBQU0sa0JBQWtCLENBQUMsQ0FBQTtBQVEvQixlQUFPLEdBQUcsQ0FBQyxVQUFtQjtJQUVyQywwQkFBMEI7SUFDMUIsRUFBRSxDQUFBLENBQ0UsT0FBTyxVQUFVLENBQUMsUUFBUSxJQUFJLFNBQVM7V0FDcEMsT0FBTyxVQUFVLENBQUMsZUFBZSxJQUFJLFNBQzVDLENBQUMsQ0FBQSxDQUFDO1FBQ0UsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDM0IsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7UUFDcEUsVUFBVSxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztJQUNuRCxDQUFDO0lBQUEsQ0FBQztJQUVGLGtCQUFrQjtJQUNsQixJQUFJLFVBQWlCLENBQUM7SUFDdEIsRUFBRSxDQUFBLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUM7UUFDZixVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBQyxlQUFlLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBQUEsQ0FBQztJQUVGLGNBQWM7SUFDZCxJQUFJLE9BQU8sQ0FBQztJQUNaLEVBQUUsQ0FBQSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDaEQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsZUFBZSxDQUFDLENBQUM7UUFDckQsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQUEsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEUsRUFBRSxDQUFBLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUM7UUFDcEIsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUM7WUFDN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDbkIsQ0FBQztBQUNMLENBQUMsQ0FBQSJ9
|
||||
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
|
6
dist/npmextra.classes.keyValueStore.d.ts
vendored
Normal file
6
dist/npmextra.classes.keyValueStore.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
export declare type keyValueStoreTypes = 'path' | 'gitProject';
|
||||
export declare class KeyValueStore {
|
||||
constructor(optionsArg: {
|
||||
type: keyValueStoreTypes;
|
||||
});
|
||||
}
|
22
dist/npmextra.classes.keyValueStore.js
vendored
Normal file
22
dist/npmextra.classes.keyValueStore.js
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
class KeyValueStore {
|
||||
constructor(optionsArg) {
|
||||
}
|
||||
}
|
||||
exports.KeyValueStore = 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 = () => {
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEuY2xhc3Nlcy5rZXl2YWx1ZXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtZXh0cmEuY2xhc3Nlcy5rZXl2YWx1ZXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQTtJQUNJLFlBQVksVUFFWDtJQUVELENBQUM7Q0FBQTtBQUxMLHNDQUtLO0FBQ0Q7O0VBRUQ7QUFDSCxJQUFJLE1BQU0sR0FBQztBQUVYLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxPQUFPLEdBQUM7QUFFWixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksT0FBTyxHQUFDO0FBRVosQ0FBQyxDQUFBIn0=
|
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==
|
8
dist/npmextra.paths.js
vendored
8
dist/npmextra.paths.js
vendored
@ -2,7 +2,7 @@
|
||||
const plugins = require("./npmextra.plugins");
|
||||
// directories
|
||||
exports.cwd = process.cwd();
|
||||
exports.packageDir = plugins.path.join(__dirname, "../");
|
||||
//
|
||||
exports.configFile = plugins.path.join(exports.cwd, "npmextra.json");
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1leHRyYS5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxPQUFPLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUU5QyxjQUFjO0FBQ0gsV0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQixrQkFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztBQUUzRCxFQUFFO0FBQ1Msa0JBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFHLEVBQUMsZUFBZSxDQUFDLENBQUMifQ==
|
||||
exports.packageDir = plugins.path.join(__dirname, '../');
|
||||
// files
|
||||
exports.configFile = plugins.path.join(exports.cwd, 'npmextra.json');
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1leHRyYS5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOENBQTZDO0FBRTdDLGNBQWM7QUFDSCxRQUFBLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7QUFDbkIsUUFBQSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLEtBQUssQ0FBQyxDQUFBO0FBRTFELFFBQVE7QUFDRyxRQUFBLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFHLEVBQUMsZUFBZSxDQUFDLENBQUEifQ==
|
12
dist/npmextra.plugins.d.ts
vendored
12
dist/npmextra.plugins.d.ts
vendored
@ -1,6 +1,6 @@
|
||||
import "typings-global";
|
||||
export import beautylog = require("beautylog");
|
||||
export import lodash = require("lodash");
|
||||
export import path = require("path");
|
||||
export import smartfile = require("smartfile");
|
||||
export import q = require("q");
|
||||
import 'typings-global';
|
||||
export import beautylog = require('beautylog');
|
||||
export import lodash = require('lodash');
|
||||
export import path = require('path');
|
||||
export import smartfile = require('smartfile');
|
||||
export import q = require('q');
|
||||
|
2
dist/npmextra.plugins.js
vendored
2
dist/npmextra.plugins.js
vendored
@ -5,4 +5,4 @@ exports.lodash = require("lodash");
|
||||
exports.path = require("path");
|
||||
exports.smartfile = require("smartfile");
|
||||
exports.q = require("q");
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWV4dHJhLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUNWLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsY0FBTSxXQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUN2QixpQkFBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyJ9
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtZXh0cmEucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWV4dHJhLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUF1QjtBQUN2Qix5Q0FBOEM7QUFDOUMsbUNBQXdDO0FBQ3hDLCtCQUFvQztBQUNwQyx5Q0FBOEM7QUFDOUMseUJBQThCIn0=
|
18
package.json
18
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "npmextra",
|
||||
"version": "1.0.6",
|
||||
"version": "2.0.0",
|
||||
"description": "do more with npm",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
@ -18,16 +18,16 @@
|
||||
},
|
||||
"homepage": "https://gitlab.com/pushrocks/npmextra#README",
|
||||
"dependencies": {
|
||||
"@types/q": "^0.0.27",
|
||||
"beautylog": "^5.0.14",
|
||||
"lodash": "^4.13.1",
|
||||
"@types/q": "^0.x.x",
|
||||
"beautylog": "^5.0.23",
|
||||
"lodash": "^4.16.1",
|
||||
"q": "^1.4.1",
|
||||
"smartfile": "^4.0.10",
|
||||
"typings-global": "^1.0.6"
|
||||
"smartfile": "^4.0.20",
|
||||
"typings-global": "^1.0.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/should": "^8.1.26",
|
||||
"should": "^9.0.2",
|
||||
"typings-test": "^1.0.1"
|
||||
"@types/should": "^8.1.30",
|
||||
"should": "^11.1.0",
|
||||
"typings-test": "^1.0.3"
|
||||
}
|
||||
}
|
||||
|
3
test/test.d.ts
vendored
3
test/test.d.ts
vendored
@ -1,2 +1 @@
|
||||
import "typings-test";
|
||||
import "should";
|
||||
import 'typings-test';
|
||||
|
31
test/test.js
31
test/test.js
@ -1,16 +1,27 @@
|
||||
"use strict";
|
||||
require("typings-test");
|
||||
const path = require("path");
|
||||
require("should");
|
||||
const should = require("should");
|
||||
const npmExtra = require("../dist/index");
|
||||
describe("npmextra", function () {
|
||||
it("should read a config file", function () {
|
||||
let testData = npmExtra.dataFor({
|
||||
toolName: "testTool",
|
||||
defaultSettings: { someKey2: "someValue2" },
|
||||
cwd: path.join(process.cwd(), "test/")
|
||||
let testNpmextra;
|
||||
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 () {
|
||||
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 = testNpmextra.dataFor('testTool', {
|
||||
someKey2: 'someValue2'
|
||||
});
|
||||
testData.should.have.ownProperty("someKey2");
|
||||
should(testData).have.ownProperty('someKey2');
|
||||
should(testData.testValue).equal(2);
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxJQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDOUIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUVoQixNQUFPLFFBQVEsV0FBVyxlQUFlLENBQUMsQ0FBQztBQUUzQyxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2hCLEVBQUUsQ0FBQywyQkFBMkIsRUFBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzVCLFFBQVEsRUFBQyxVQUFVO1lBQ25CLGVBQWUsRUFBQyxFQUFDLFFBQVEsRUFBQyxZQUFZLEVBQUM7WUFDdkMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFDLE9BQU8sQ0FBQztTQUN4QyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyJ9
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUVyQixpQ0FBZ0M7QUFFaEMsMENBQTBDO0FBRTFDLElBQUksWUFBK0IsQ0FBQTtBQUVuQyxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2hCLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUN6QyxZQUFZLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN6RCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtRQUM3QyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLHlFQUF5RSxFQUFDO1FBQ3pFLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUE7UUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNqRCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQywyQkFBMkIsRUFBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUMvQixVQUFVLEVBQ1Y7WUFDSSxRQUFRLEVBQUUsWUFBWTtTQUN6QixDQUNKLENBQUE7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0=
|
44
test/test.ts
44
test/test.ts
@ -1,16 +1,32 @@
|
||||
import "typings-test";
|
||||
import path = require("path");
|
||||
import "should";
|
||||
import 'typings-test'
|
||||
import path = require('path')
|
||||
import * as should from 'should'
|
||||
|
||||
import npmExtra = require("../dist/index");
|
||||
import npmExtra = require('../dist/index')
|
||||
|
||||
describe("npmextra",function(){
|
||||
it("should read a config file",function(){
|
||||
let testData = npmExtra.dataFor({
|
||||
toolName:"testTool",
|
||||
defaultSettings:{someKey2:"someValue2"},
|
||||
cwd: path.join(process.cwd(),"test/")
|
||||
});
|
||||
testData.should.have.ownProperty("someKey2");
|
||||
});
|
||||
});
|
||||
let testNpmextra: npmExtra.Npmextra
|
||||
|
||||
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() {
|
||||
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 = testNpmextra.dataFor(
|
||||
'testTool',
|
||||
{
|
||||
someKey2: 'someValue2'
|
||||
}
|
||||
)
|
||||
should(testData).have.ownProperty('someKey2')
|
||||
should(testData.testValue).equal(2)
|
||||
})
|
||||
})
|
||||
|
53
ts/index.ts
53
ts/index.ts
@ -1,51 +1,4 @@
|
||||
import * as plugins from "./npmextra.plugins"
|
||||
import * as paths from "./npmextra.paths";
|
||||
import * as plugins from './npmextra.plugins'
|
||||
|
||||
export interface IDataFor {
|
||||
toolName:string;
|
||||
defaultSettings?;
|
||||
cwd?:string
|
||||
}
|
||||
|
||||
export let dataFor = (optionsArg:IDataFor) => {
|
||||
|
||||
// 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:string;
|
||||
if(optionsArg.cwd){
|
||||
lookupPath = plugins.path.join(optionsArg.cwd,"npmextra.json");
|
||||
} else {
|
||||
lookupPath = paths.configFile;
|
||||
};
|
||||
|
||||
// get allData
|
||||
let allData;
|
||||
if(plugins.smartfile.fs.fileExistsSync(lookupPath)){
|
||||
allData = plugins.smartfile.fs.toObjectSync(lookupPath);
|
||||
} else {
|
||||
plugins.beautylog.warn(`${lookupPath} is misssing!`);
|
||||
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 * from './npmextra.classes.npmextra'
|
||||
export * from './npmextra.classes.keyvaluestore'
|
||||
|
33
ts/npmextra.classes.keyvaluestore.ts
Normal file
33
ts/npmextra.classes.keyvaluestore.ts
Normal file
@ -0,0 +1,33 @@
|
||||
import * as plugins from './npmextra.plugins'
|
||||
|
||||
export type keyValueStoreTypes = 'path' | 'gitProject'
|
||||
|
||||
|
||||
|
||||
export class KeyValueStore {
|
||||
constructor(optionsArg: {
|
||||
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 () {
|
||||
|
||||
}
|
||||
}
|
68
ts/npmextra.classes.npmextra.ts
Normal file
68
ts/npmextra.classes.npmextra.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import * as plugins from './npmextra.plugins'
|
||||
import * as paths from './npmextra.paths'
|
||||
|
||||
/**
|
||||
* Npmextra class allows easy configuration of tools
|
||||
*/
|
||||
export class Npmextra {
|
||||
cwd: string
|
||||
lookupPath: 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
|
||||
*/
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
import * as plugins from "./npmextra.plugins";
|
||||
import * as plugins from './npmextra.plugins'
|
||||
|
||||
// directories
|
||||
export let cwd = process.cwd();
|
||||
export let packageDir = plugins.path.join(__dirname,"../");
|
||||
export let cwd = process.cwd()
|
||||
export let packageDir = plugins.path.join(__dirname,'../')
|
||||
|
||||
//
|
||||
export let configFile = plugins.path.join(cwd,"npmextra.json");
|
||||
// files
|
||||
export let configFile = plugins.path.join(cwd,'npmextra.json')
|
||||
|
@ -1,6 +1,6 @@
|
||||
import "typings-global";
|
||||
export import beautylog = require("beautylog");
|
||||
export import lodash = require("lodash");
|
||||
export import path = require("path");
|
||||
export import smartfile = require("smartfile");
|
||||
export import q = require("q");
|
||||
import 'typings-global'
|
||||
export import beautylog = require('beautylog')
|
||||
export import lodash = require('lodash')
|
||||
export import path = require('path')
|
||||
export import smartfile = require('smartfile')
|
||||
export import q = require('q')
|
||||
|
3
tslint.json
Normal file
3
tslint.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "tslint-config-standard"
|
||||
}
|
Reference in New Issue
Block a user