2019-09-06 14:04:23 +02:00
|
|
|
const {
|
2019-09-07 07:50:35 +02:00
|
|
|
readJSON, exists
|
2019-09-06 14:04:23 +02:00
|
|
|
} = require("fs-extra");
|
2019-09-07 07:50:35 +02:00
|
|
|
const {
|
|
|
|
resolve, join , dirname
|
|
|
|
} = require("path");
|
2019-09-06 14:04:23 +02:00
|
|
|
|
2019-09-07 07:50:35 +02:00
|
|
|
const getLibDir = (appPath, libname) => {
|
|
|
|
try {
|
|
|
|
const componentsFile = require.resolve(
|
|
|
|
join(libname, "components.json"),
|
|
|
|
{ paths: [appPath]});
|
|
|
|
return dirname(componentsFile);
|
|
|
|
} catch(e) {
|
|
|
|
console.log(e);
|
|
|
|
}
|
|
|
|
}
|
2019-09-06 14:04:23 +02:00
|
|
|
|
|
|
|
const getComponentsFilepath = libPath =>
|
|
|
|
resolve(libPath, "components.json");
|
|
|
|
|
|
|
|
module.exports.componentsFilepath = (appPath, libname) =>
|
|
|
|
getComponentsFilepath(getLibDir(appPath, libname));
|
|
|
|
|
|
|
|
module.exports.componentLibraryInfo = async (appPath, libname) => {
|
|
|
|
|
|
|
|
const libDir = getLibDir(appPath, libname);
|
|
|
|
const componentsPath = getComponentsFilepath(libDir);
|
|
|
|
|
|
|
|
if(!await exists(componentsPath)) {
|
|
|
|
const e = new Error(`could not find components definition file at ${componentsPath}`);
|
|
|
|
e.statusCode = 404;
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
return ({
|
|
|
|
components: await readJSON(componentsPath),
|
|
|
|
libDir,
|
|
|
|
componentsPath
|
|
|
|
});
|
|
|
|
} catch(e) {
|
|
|
|
const err = `could not parse JSON - ${componentsPath} : ${e.message}`;
|
|
|
|
throw new Error(err);
|
|
|
|
}
|
|
|
|
}
|