55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import * as plugins from "./npmextra.plugins"
|
|
import * as paths from "./npmextra.paths";
|
|
|
|
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 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 configFilePresent = ():boolean => {
|
|
return plugins.smartfile.fs.fileExistsSync(paths.configFile);
|
|
} |