2022-01-17 07:08:17 +00:00
|
|
|
const { readdirSync, writeFileSync } = require('fs');
|
|
|
|
|
|
2022-05-20 14:02:46 +00:00
|
|
|
const isPrivatePackage = (name) => {
|
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
const pkg = require(`./packages/${name}/package.json`);
|
|
|
|
|
return pkg.private;
|
|
|
|
|
};
|
|
|
|
|
|
2022-03-10 06:59:48 +00:00
|
|
|
const packages = readdirSync('./packages', { withFileTypes: true }).filter(
|
2022-05-20 14:02:46 +00:00
|
|
|
(dirent) => dirent.isDirectory() && dirent.name !== 'common' && !isPrivatePackage(dirent.name)
|
2022-03-10 06:59:48 +00:00
|
|
|
);
|
2022-01-17 07:08:17 +00:00
|
|
|
|
2022-03-10 06:59:48 +00:00
|
|
|
const capitalize = (str) => str.replace(/^./, (str) => str.toUpperCase());
|
2022-01-17 07:08:17 +00:00
|
|
|
|
2022-03-10 06:59:48 +00:00
|
|
|
const manifestImports = packages.map(
|
|
|
|
|
(dirent) => `import ${capitalize(dirent.name)} from './packages/${dirent.name}/lib/manifest.json'`
|
|
|
|
|
);
|
|
|
|
|
const operationsImports = packages.map(
|
|
|
|
|
(dirent) => `import ${capitalize(dirent.name)}Operation from './packages/${dirent.name}/lib/operations.json'`
|
|
|
|
|
);
|
2022-02-08 05:04:50 +00:00
|
|
|
const svgsImports = packages.map((dirent) => `import ${dirent.name}Svg from './packages/${dirent.name}/lib/icon.svg'`);
|
2022-01-17 07:08:17 +00:00
|
|
|
|
2022-03-10 06:59:48 +00:00
|
|
|
const manifestOuts = `export const allManifests = {\n ${packages
|
|
|
|
|
.map((dirent) => capitalize(dirent.name))
|
|
|
|
|
.join(',\n')} \n }`;
|
|
|
|
|
const operationsOuts = `export const allOperations = {\n ${packages
|
|
|
|
|
.map((dirent) => capitalize(dirent.name) + ': ' + capitalize(dirent.name) + 'Operation')
|
|
|
|
|
.join(',\n')} \n }`;
|
|
|
|
|
const svgOuts = `export const allSvgs = {\n ${packages
|
|
|
|
|
.map((dirent) => dirent.name + ': ' + dirent.name + 'Svg')
|
|
|
|
|
.join(',\n')} \n }`;
|
2022-01-17 07:08:17 +00:00
|
|
|
|
|
|
|
|
const clientContent = `
|
|
|
|
|
${manifestImports.join('\n')} \n
|
|
|
|
|
${operationsImports.join('\n')} \n
|
|
|
|
|
${svgsImports.join('\n')} \n
|
|
|
|
|
${manifestOuts}\n
|
|
|
|
|
${operationsOuts}\n
|
|
|
|
|
${svgOuts}\n
|
2022-03-10 06:59:48 +00:00
|
|
|
`;
|
2022-01-17 07:08:17 +00:00
|
|
|
|
2022-03-10 06:59:48 +00:00
|
|
|
writeFileSync('client.js', clientContent);
|