Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #!/usr/bin/env node
  2. const { promises: fs } = require('fs');
  3. const path = require('path');
  4.  
  5. (async () => {
  6. const nvmPath = process.env.NVM_DIR;
  7.  
  8. if (!nvmPath) {
  9. console.error('Unable to detect nvm path. Exiting.');
  10. process.exit(1);
  11. }
  12.  
  13. const onlyNpm = {};
  14. const nothing = {};
  15. const apps = await fs.readdir(path.resolve(nvmPath, 'versions'));
  16.  
  17. for await (const app of apps) {
  18.  
  19. const versions = await fs.readdir(path.resolve(nvmPath, 'versions', app));
  20.  
  21. for (const version of versions) {
  22. const packagesPath = [nvmPath, 'versions', app, version, 'lib', 'node_modules'];
  23. const packages = await fs.readdir(path.resolve(...packagesPath));
  24.  
  25. const hasOnlyNpm = packages.length === 1 && packages[0] === 'npm';
  26. const hasNothing = !packages.length;
  27. if (hasOnlyNpm) {
  28. if (!onlyNpm[app]) {
  29. onlyNpm[app] = [];
  30. }
  31. onlyNpm[app].push(version);
  32. continue;
  33. } else if (hasNothing) {
  34. if (!nothing[app]) {
  35. nothing[app] = [];
  36. }
  37. nothing[app].push(version);
  38. continue;
  39. }
  40.  
  41. console.log([`Node ${version}`, ...packages].join(`\n - `), '\n');
  42. }
  43. }
  44.  
  45. if (Object.keys(onlyNpm).length) {
  46. console.log(`# Only npm:`);
  47. for (const app in onlyNpm) {
  48. console.log(` - ${app}: ${onlyNpm[app].join(', ')}`);
  49. }
  50. console.log('');
  51. }
  52.  
  53. if (Object.keys(nothing).length) {
  54. console.log(`# No package:`);
  55. for (const app in nothing) {
  56. console.log(` - ${app}: ${nothing[app].join(', ')}`);
  57. }
  58. console.log('');
  59. }
  60.  
  61. process.exit(0);
  62. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement