generate-plugin-definitions-source.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * the tool for genetion of plugin definitions source code
  3. *
  4. * @author Yuki Takei <yuki@weseek.co.jp>
  5. */
  6. const fs = require('graceful-fs');
  7. const slash = require('slash');
  8. const swig = require('swig');
  9. const helpers = require('../config/helpers');
  10. const TEMPLATE = helpers.root('bin/templates/plugin-definitions.js.swig');
  11. const OUT = helpers.root('tmp/plugins/plugin-definitions.js');
  12. const PluginUtils = require('../lib/plugins/plugin-utils');
  13. const pluginUtils = new PluginUtils();
  14. // list plugin names
  15. let pluginNames = pluginUtils.listPluginNames(helpers.root());
  16. if (process.env.NODE_ENV === 'development'
  17. && process.env.PLUGIN_NAMES_TOBE_LOADED !== undefined
  18. && process.env.PLUGIN_NAMES_TOBE_LOADED.length > 0) {
  19. pluginNamesDev = process.env.PLUGIN_NAMES_TOBE_LOADED.split(',');
  20. // merge and remove duplicates
  21. if (pluginNamesDev.length > 0) {
  22. pluginNames = pluginNames.concat(pluginNamesDev);
  23. pluginNames = Array.from(new Set(pluginNames));
  24. }
  25. }
  26. // get definitions
  27. const definitions = pluginNames
  28. .map((name) => {
  29. return pluginUtils.generatePluginDefinition(name, true);
  30. })
  31. .map((definition) => {
  32. // convert backslash to slash
  33. definition.entries = definition.entries.map((entryPath) => {
  34. return slash(entryPath);
  35. });
  36. return definition;
  37. });
  38. var compiledTemplate = swig.compileFile(TEMPLATE);
  39. var code = compiledTemplate({definitions});
  40. // write
  41. fs.writeFileSync(OUT, code);