2016-09-23 20:13:06 +00:00
|
|
|
import * as plugins from './npmextra.plugins'
|
|
|
|
import * as paths from './npmextra.paths'
|
|
|
|
|
|
|
|
/**
|
2016-09-24 14:44:48 +00:00
|
|
|
* Npmextra class allows easy configuration of tools
|
2016-09-23 20:13:06 +00:00
|
|
|
*/
|
2016-09-24 14:44:48 +00:00
|
|
|
export class Npmextra {
|
|
|
|
cwd: string
|
|
|
|
lookupPath: string
|
|
|
|
npmextraJsonExists: boolean
|
|
|
|
npmextraJsonData: boolean
|
2016-09-23 20:13:06 +00:00
|
|
|
|
2016-09-24 14:44:48 +00:00
|
|
|
/**
|
|
|
|
* creates instance of Npmextra
|
|
|
|
*/
|
|
|
|
constructor(cwdArg?: string) {
|
|
|
|
if (cwdArg) {
|
|
|
|
this.cwd = cwdArg
|
|
|
|
} else {
|
|
|
|
this.cwd = paths.cwd
|
|
|
|
}
|
|
|
|
this.checkLookupPath()
|
|
|
|
this.checkNpmextraJsonExists()
|
|
|
|
this.checkNpmextraJsonData()
|
|
|
|
}
|
2016-09-23 20:13:06 +00:00
|
|
|
|
2016-09-24 14:44:48 +00:00
|
|
|
/**
|
|
|
|
* merges the supplied options with the ones from npmextra.json
|
|
|
|
*/
|
2016-09-24 14:52:38 +00:00
|
|
|
dataFor<IToolConfig>(toolnameArg: string, defaultOptionsArg: any): IToolConfig {
|
2016-09-24 14:44:48 +00:00
|
|
|
let npmextraToolOptions
|
2016-09-24 14:52:38 +00:00
|
|
|
if (this.npmextraJsonData[toolnameArg]) {
|
2016-09-24 14:44:48 +00:00
|
|
|
npmextraToolOptions = this.npmextraJsonData[toolnameArg]
|
2016-09-23 20:13:06 +00:00
|
|
|
} else {
|
2016-09-24 14:44:48 +00:00
|
|
|
npmextraToolOptions = {}
|
2016-09-23 20:13:06 +00:00
|
|
|
}
|
2016-09-24 14:44:48 +00:00
|
|
|
let mergedOptions = plugins.lodash.merge({}, defaultOptionsArg, npmextraToolOptions)
|
|
|
|
return mergedOptions
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* checks if the JSON exists
|
|
|
|
*/
|
|
|
|
private checkNpmextraJsonExists() {
|
|
|
|
this.npmextraJsonExists = plugins.smartfile.fs.fileExistsSync(this.lookupPath)
|
2016-09-23 20:13:06 +00:00
|
|
|
}
|
|
|
|
|
2016-09-24 14:44:48 +00:00
|
|
|
/**
|
|
|
|
* gets lookupPath
|
|
|
|
*/
|
|
|
|
private checkLookupPath() {
|
|
|
|
if (this.cwd) {
|
|
|
|
this.lookupPath = plugins.path.join(this.cwd, 'npmextra.json')
|
2016-09-23 20:13:06 +00:00
|
|
|
} else {
|
2016-09-24 14:44:48 +00:00
|
|
|
this.lookupPath = paths.configFile
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* get npmextraJsonData
|
|
|
|
*/
|
|
|
|
private checkNpmextraJsonData() {
|
|
|
|
if (this.npmextraJsonExists) {
|
|
|
|
this.npmextraJsonData = plugins.smartfile.fs.toObjectSync(this.lookupPath)
|
2016-09-23 20:13:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|