generate-plugin-definitions-source.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 normalize = require('normalize-path');
  8. const swig = require('swig-templates');
  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. // add from PLUGIN_NAMES_TOBE_LOADED when development
  17. if (process.env.NODE_ENV === 'development'
  18. && process.env.PLUGIN_NAMES_TOBE_LOADED !== undefined
  19. && process.env.PLUGIN_NAMES_TOBE_LOADED.length > 0) {
  20. pluginNamesDev = process.env.PLUGIN_NAMES_TOBE_LOADED.split(',');
  21. // merge and remove duplicates
  22. if (pluginNamesDev.length > 0) {
  23. pluginNames = pluginNames.concat(pluginNamesDev);
  24. pluginNames = Array.from(new Set(pluginNames));
  25. }
  26. }
  27. // get definitions
  28. const definitions = pluginNames
  29. .map((name) => {
  30. return pluginUtils.generatePluginDefinition(name, true);
  31. })
  32. .map((definition) => {
  33. // convert backslash to slash
  34. definition.entries = definition.entries.map((entryPath) => {
  35. return normalize(entryPath);
  36. });
  37. return definition;
  38. });
  39. var compiledTemplate = swig.compileFile(TEMPLATE);
  40. var code = compiledTemplate({definitions});
  41. // write
  42. fs.writeFileSync(OUT, code);