build-index.js 997 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 buildShortPagesIndex(files) {
  10. var reducer = function (index, file) {
  11. var os = parsePlatform(file);
  12. var page = parsePagename(file);
  13. if (index[page]) {
  14. index[page].push(os);
  15. } else {
  16. index[page] = [os];
  17. }
  18. return index;
  19. };
  20. return files.reduce(reducer, {});
  21. }
  22. function buildPagesIndex(shortIndex) {
  23. return Object.keys(shortIndex)
  24. .sort()
  25. .map(function (page) {
  26. return {
  27. name: page,
  28. platform: shortIndex[page]
  29. };
  30. });
  31. }
  32. function saveIndex(index) {
  33. var indexFile = {
  34. commands: index
  35. };
  36. console.log(JSON.stringify(indexFile));
  37. }
  38. glob('pages/**/*.md', function (er, files) {
  39. var shortIndex = buildShortPagesIndex(files);
  40. var index = buildPagesIndex(shortIndex);
  41. saveIndex(index);
  42. });