Skip to content

Commit

Permalink
[New] add simple CLI util
Browse files Browse the repository at this point in the history
 - requires it is executed directly, not via `node`, and not required
 - supports `--preserve-symlinks`, only when node itself supports it
 - supports `--` to stop further argument parsing
 - errors if a specifier is omitted

Co-authored-by: j- <j@skeoh.com>
Co-authored-by: Jordan Harband <ljharb@gmail.com>
  • Loading branch information
j- and ljharb committed Mar 3, 2016
1 parent 9458928 commit 1d7f52d
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@
"sort-keys": 0,
},
"overrides": [
{
"files": "bin/**",
"rules": {
"no-process-exit": "off",
},
},
{
"files": "example/**",
"rules": {
Expand Down
47 changes: 47 additions & 0 deletions bin/resolve
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env node

'use strict';

var path = require('path');
var fs = require('fs');

if (
!process.argv
|| process.argv.length < 2
|| (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino)
|| (process.env._ && path.resolve(process.env._) !== __filename)
) {
console.error('Error: `resolve` must be run directly as an executable');
process.exit(1);
}

var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag');

var preserveSymlinks = false;
for (var i = 2; i < process.argv.length; i += 1) {
if (process.argv[i].slice(0, 2) === '--') {
if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') {
preserveSymlinks = true;
} else if (process.argv[i].length > 2) {
console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, ''));
process.exit(2);
}
process.argv.splice(i, 1);
i -= 1;
if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax
}
}

if (process.argv.length < 3) {
console.error('Error: `resolve` expects a specifier');
process.exit(2);
}

var resolve = require('../');

var result = resolve.sync(process.argv[2], {
basedir: process.cwd(),
preserveSymlinks: preserveSymlinks
});

console.log(result);
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
"type": "git",
"url": "git://github.com/browserify/resolve.git"
},
"bin": {
"resolve": "./bin/resolve"
},
"main": "index.js",
"exports": {
".": [
Expand Down Expand Up @@ -38,7 +41,7 @@
"prepublishOnly": "safe-publish-latest",
"prepublish": "not-in-publish || npm run prepublishOnly",
"prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')",
"lint": "eslint --ext=js,mjs --no-eslintrc -c .eslintrc .",
"lint": "eslint --ext=js,mjs --no-eslintrc -c .eslintrc . 'bin/**'",
"pretests-only": "cd ./test/resolver/nested_symlinks && node mylib/sync && node mylib/async",
"tests-only": "tape test/*.js",
"pretest": "npm run lint",
Expand Down Expand Up @@ -69,6 +72,7 @@
},
"dependencies": {
"is-core-module": "^2.8.0",
"path-parse": "^1.0.7"
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
}

0 comments on commit 1d7f52d

Please sign in to comment.