gen-nav.js 971 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/env node
  2. const path = require('path');
  3. const proc = require('child_process');
  4. const startCase = require('lodash.startcase');
  5. const baseDir = process.argv[2];
  6. const files = proc.execFileSync(
  7. 'find', [baseDir, '-type', 'f'], { encoding: 'utf8' },
  8. ).split('\n').filter(s => s !== '');
  9. console.log('.API');
  10. function getPageTitle (directory) {
  11. if (directory === 'metatx') {
  12. return 'Meta Transactions';
  13. } else {
  14. return startCase(directory);
  15. }
  16. }
  17. const links = files.map((file) => {
  18. const doc = file.replace(baseDir, '');
  19. const title = path.parse(file).name;
  20. return {
  21. xref: `* xref:${doc}[${getPageTitle(title)}]`,
  22. title,
  23. };
  24. });
  25. // Case-insensitive sort based on titles (so 'token/ERC20' gets sorted as 'erc20')
  26. const sortedLinks = links.sort(function (a, b) {
  27. return a.title.toLowerCase().localeCompare(b.title.toLowerCase(), undefined, { numeric: true });
  28. });
  29. for (const link of sortedLinks) {
  30. console.log(link.xref);
  31. }