npmextra/ts/index.ts

51 lines
1.4 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 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;
}
}