extract-data.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var rpt = require('read-package-tree');
  2. var data = require('./package.json');
  3. var path = require('path');
  4. var glob = require('glob');
  5. var fs = require('fs-extra');
  6. var seen = {};
  7. var schemaDir = path.resolve('./schemas');
  8. fs.removeSync(schemaDir);
  9. fs.ensureDirSync(schemaDir);
  10. var themesDir = path.resolve('./themes');
  11. fs.removeSync(themesDir);
  12. fs.ensureDirSync(themesDir);
  13. function extractNode(data) {
  14. data.children.forEach(function(child) {
  15. extractNode(child);
  16. });
  17. if (seen[data.package.name]) {
  18. return;
  19. }
  20. seen[data.package.name] = true;
  21. var jlab = data.package.jupyterlab
  22. if (!jlab) {
  23. return;
  24. }
  25. // Handle schemas.
  26. var schemaDir = jlab['schemaDir'];
  27. if (schemaDir) {
  28. debugger;
  29. schemaDir = path.join(data.realpath, schemaDir);
  30. var schemas = glob.sync(path.join(schemaDir, '*'));
  31. schemas.forEach(function(schemaPath) {
  32. var file = path.basename(schemaPath);
  33. var to = path.join('schemas', file);
  34. fs.copySync(schemaPath, to);
  35. });
  36. }
  37. // Handle themes.
  38. var themeDir = jlab['themeDir'];
  39. if (themeDir) {
  40. var name = data.package.name.replace('@', '');
  41. name = name.replace('/', '-');
  42. var from = path.join(data.realpath, themeDir);
  43. var to = path.join('themes', name);
  44. fs.copySync(from, to);
  45. }
  46. }
  47. rpt('.', function (er, data) {
  48. extractNode(data);
  49. })