Skip to content

Commit

Permalink
v5 support in CLI (#197)
Browse files Browse the repository at this point in the history
  • Loading branch information
broofa committed Jun 13, 2017
1 parent 1d56dc9 commit 082a0b3
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 18 deletions.
58 changes: 41 additions & 17 deletions bin/uuid
@@ -1,26 +1,50 @@
#!/usr/bin/env node
var assert = require('assert');

var path = require('path');
var uuid = require(path.join(__dirname, '..'));
function usage() {
console.log('Usage:');
console.log(' uuid');
console.log(' uuid v1');
console.log(' uuid v4');
console.log(' uuid v5 <name> <namespace uuid>');
console.log(' uuid --help');
console.log('\nNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122');
}

var arg = process.argv[2];
var args = process.argv.slice(2);

if ('--help' === arg) {
console.log('\n USAGE: uuid [version] [options]\n\n');
console.log(' options:\n');
console.log(' --help Display this message and exit\n');
if (args.indexOf('--help') >= 0) {
usage();
process.exit(0);
}
var version = args.shift() || 'v4';

if (null == arg) {
console.log(uuid());
process.exit(0);
}
switch (version) {
case 'v1':
var uuidV1 = require('../v1');
console.log(uuidV1());
break;

if ('v1' !== arg && 'v4' !== arg) {
console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"');
process.exit(1);
}
case 'v4':
var uuidV4 = require('../v4');
console.log(uuidV4());
break;

case 'v5':
var uuidV5 = require('../v5');

console.log(uuid[arg]());
process.exit(0);
var name = args.shift();
var namespace = args.shift();
assert(name != null, 'v5 name not specified');
assert(namespace != null, 'v5 namespace not specified');

if (namespace == 'URL') namespace = uuidV5.URL;
if (namespace == 'DNS') namespace = uuidV5.DNS;

console.log(uuidV5(name, namespace));
break;

default:
usage();
process.exit(1);
}
2 changes: 1 addition & 1 deletion v5.js
Expand Up @@ -25,7 +25,7 @@ function v5(name, namespace, buf, offset) {
if (typeof(namespace) == 'string') namespace = uuidToBytes(namespace);

if (!Array.isArray(name)) throw TypeError('name must be an array of bytes');
if (!Array.isArray(namespace) || namespace.length != 16) throw TypeError('namespace must be an array of bytes');
if (!Array.isArray(namespace) || namespace.length != 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values');

// Per 4.3
var bytes = sha1(namespace.concat(name));
Expand Down

0 comments on commit 082a0b3

Please sign in to comment.