resolve 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env node
  2. 'use strict';
  3. var path = require('path');
  4. var fs = require('fs');
  5. if (
  6. !process.argv
  7. || process.argv.length < 2
  8. || (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino)
  9. || (process.env._ && path.resolve(process.env._) !== __filename)
  10. ) {
  11. console.error('Error: `resolve` must be run directly as an executable');
  12. process.exit(1);
  13. }
  14. var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag');
  15. var preserveSymlinks = false;
  16. for (var i = 2; i < process.argv.length; i += 1) {
  17. if (process.argv[i].slice(0, 2) === '--') {
  18. if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') {
  19. preserveSymlinks = true;
  20. } else if (process.argv[i].length > 2) {
  21. console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, ''));
  22. process.exit(2);
  23. }
  24. process.argv.splice(i, 1);
  25. i -= 1;
  26. if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax
  27. }
  28. }
  29. if (process.argv.length < 3) {
  30. console.error('Error: `resolve` expects a specifier');
  31. process.exit(2);
  32. }
  33. var resolve = require('../');
  34. var result = resolve.sync(process.argv[2], {
  35. basedir: process.cwd(),
  36. preserveSymlinks: preserveSymlinks
  37. });
  38. console.log(result);