uuid-bin.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import * as assert from 'assert';
  2. import v1 from './v1.js';
  3. import v3 from './v3.js';
  4. import v4 from './v4.js';
  5. import v5 from './v5.js';
  6. import v6 from './v6.js';
  7. import v7 from './v7.js';
  8. function usage() {
  9. console.log('Usage:');
  10. console.log(' uuid');
  11. console.log(' uuid v1');
  12. console.log(' uuid v3 <name> <namespace uuid>');
  13. console.log(' uuid v4');
  14. console.log(' uuid v5 <name> <namespace uuid>');
  15. console.log(' uuid v6');
  16. console.log(' uuid v7');
  17. console.log(' uuid --help');
  18. console.log('\nNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC9562');
  19. }
  20. const args = process.argv.slice(2);
  21. if (args.indexOf('--help') >= 0) {
  22. usage();
  23. process.exit(0);
  24. }
  25. const version = args.shift() || 'v4';
  26. switch (version) {
  27. case 'v1':
  28. console.log(v1());
  29. break;
  30. case 'v3': {
  31. const name = args.shift();
  32. let namespace = args.shift();
  33. assert.ok(name != null, 'v3 name not specified');
  34. assert.ok(namespace != null, 'v3 namespace not specified');
  35. if (namespace === 'URL') {
  36. namespace = v3.URL;
  37. }
  38. if (namespace === 'DNS') {
  39. namespace = v3.DNS;
  40. }
  41. console.log(v3(name, namespace));
  42. break;
  43. }
  44. case 'v4':
  45. console.log(v4());
  46. break;
  47. case 'v5': {
  48. const name = args.shift();
  49. let namespace = args.shift();
  50. assert.ok(name != null, 'v5 name not specified');
  51. assert.ok(namespace != null, 'v5 namespace not specified');
  52. if (namespace === 'URL') {
  53. namespace = v5.URL;
  54. }
  55. if (namespace === 'DNS') {
  56. namespace = v5.DNS;
  57. }
  58. console.log(v5(name, namespace));
  59. break;
  60. }
  61. case 'v6':
  62. console.log(v6());
  63. break;
  64. case 'v7':
  65. console.log(v7());
  66. break;
  67. default:
  68. usage();
  69. process.exit(1);
  70. }