| #! /usr/bin/env node | 
|   | 
| var createHash = require('./browserify') | 
| var argv = process.argv.slice(2) | 
|   | 
| function pipe (algorithm, s) { | 
|   var start = Date.now() | 
|   var hash = createHash(algorithm || 'sha1') | 
|   | 
|   s.on('data', function (data) { | 
|     hash.update(data) | 
|   }) | 
|   | 
|   s.on('end', function () { | 
|     if (process.env.DEBUG) { | 
|       return console.log(hash.digest('hex'), Date.now() - start) | 
|     } | 
|   | 
|     console.log(hash.digest('hex')) | 
|   }) | 
| } | 
|   | 
| function usage () { | 
|   console.error('sha.js [algorithm=sha1] [filename] # hash filename with algorithm') | 
|   console.error('input | sha.js [algorithm=sha1]    # hash stdin with algorithm') | 
|   console.error('sha.js --help                      # display this message') | 
| } | 
|   | 
| if (!process.stdin.isTTY) { | 
|   pipe(argv[0], process.stdin) | 
| } else if (argv.length) { | 
|   if (/--help|-h/.test(argv[0])) { | 
|     usage() | 
|   } else { | 
|     var filename = argv.pop() | 
|     var algorithm = argv.pop() | 
|     pipe(algorithm, require('fs').createReadStream(filename)) | 
|   } | 
| } else { | 
|   usage() | 
| } |