generate-plugin-definitions-source.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * the tool for genetion of plugin definitions source code
  3. *
  4. * @author Yuki Takei <yuki@weseek.co.jp>
  5. */
  6. require('module-alias/register');
  7. const logger = require('@alias/logger')('growi:bin:generate-plugin-definitions-source');
  8. const fs = require('graceful-fs');
  9. const normalize = require('normalize-path');
  10. const swig = require('swig-templates');
  11. const helpers = require('@commons/util/helpers');
  12. const PluginUtils = require('@server/plugins/plugin-utils');
  13. const pluginUtils = new PluginUtils();
  14. const TEMPLATE = helpers.root('bin/templates/plugin-definitions.js.swig');
  15. const OUT = helpers.root('tmp/plugins/plugin-definitions.js');
  16. // list plugin names
  17. const pluginNames = pluginUtils.listPluginNames(helpers.root());
  18. logger.info('Detected plugins: ', pluginNames);
  19. // get definitions
  20. const definitions = pluginNames
  21. .map((name) => {
  22. return pluginUtils.generatePluginDefinition(name, true);
  23. })
  24. .map((definition) => {
  25. // convert backslash to slash
  26. definition.entries = definition.entries.map((entryPath) => {
  27. return normalize(entryPath);
  28. });
  29. return definition;
  30. });
  31. const compiledTemplate = swig.compileFile(TEMPLATE);
  32. const code = compiledTemplate({ definitions });
  33. // write
  34. fs.writeFileSync(OUT, code);