bin.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #! /usr/bin/env node
  2. 'use strict';
  3. var createHash = require('./browserify');
  4. var argv = process.argv.slice(2);
  5. function pipe(algorithm, s) {
  6. var start = Date.now();
  7. var hash = createHash(algorithm || 'sha1');
  8. s.on('data', function (data) {
  9. hash.update(data);
  10. });
  11. s.on('end', function () {
  12. if (process.env.DEBUG) {
  13. console.log(hash.digest('hex'), Date.now() - start);
  14. } else {
  15. console.log(hash.digest('hex'));
  16. }
  17. });
  18. }
  19. function usage() {
  20. console.error('sha.js [algorithm=sha1] [filename] # hash filename with algorithm');
  21. console.error('input | sha.js [algorithm=sha1] # hash stdin with algorithm');
  22. console.error('sha.js --help # display this message');
  23. }
  24. if (!process.stdin.isTTY) {
  25. pipe(argv[0], process.stdin);
  26. } else if (argv.length) {
  27. if ((/--help|-h/).test(argv[0])) {
  28. usage();
  29. } else {
  30. var filename = argv.pop();
  31. var algorithm = argv.pop();
  32. // eslint-disable-next-line global-require
  33. pipe(algorithm, require('fs').createReadStream(filename));
  34. }
  35. } else {
  36. usage();
  37. }