build-index.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict';
  2. var glob = require('glob');
  3. function parsePlatform(pagefile) {
  4. return pagefile.split(/\//)[1];
  5. }
  6. function parsePagename(pagefile) {
  7. return pagefile.split(/\//)[2].replace(/\.md$/, '');
  8. }
  9. function parseLanguage(pagefile) {
  10. var pagesFolder = pagefile.split(/\//)[0];
  11. return pagesFolder == 'pages' ? 'en' : pagesFolder.replace(/^pages./, '');
  12. }
  13. function buildPagesIndex(files) {
  14. var reducer = function (index, file) {
  15. var os = parsePlatform(file);
  16. var page = parsePagename(file);
  17. var language = parseLanguage(file);
  18. if (index[page]) {
  19. if (!index[page].platform.includes(os)) {
  20. index[page].platform.push(os);
  21. }
  22. if (!index[page].language.includes(language)) {
  23. index[page].language.push(language);
  24. }
  25. } else {
  26. index[page] = {name: page, platform: [os], language: [language]};
  27. }
  28. return index;
  29. };
  30. var obj = files.reduce(reducer, {});
  31. return Object.keys(obj)
  32. .sort()
  33. .map(function(page) {
  34. return {
  35. name: page,
  36. platform: obj[page]["platform"],
  37. language: obj[page]["language"]
  38. };
  39. });
  40. }
  41. function saveIndex(index) {
  42. var indexFile = {
  43. commands: index
  44. };
  45. console.log(JSON.stringify(indexFile));
  46. }
  47. glob('pages*/**/*.md', function (er, files) {
  48. var index = buildPagesIndex(files);
  49. saveIndex(index);
  50. });