budibase/packages/server/utilities/builder/componentLibraryInfo.js

46 lines
1.2 KiB
JavaScript
Raw Normal View History

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);
}
}