58 lines
No EOL
1.9 KiB
JavaScript
58 lines
No EOL
1.9 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.shouldReadStdin = exports.SHELLJS_PIPE_INFO = exports.CONFIG_FILE = exports.OPTION_BLOCKLIST = exports.CMD_BLOCKLIST = exports.EXIT_CODES = undefined;
|
|
|
|
var _minimist = require('minimist');
|
|
|
|
var _minimist2 = _interopRequireDefault(_minimist);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
var EXIT_CODES = exports.EXIT_CODES = {
|
|
SHX_ERROR: 27, // https://xkcd.com/221/
|
|
CMD_FAILED: 1, // TODO: Once shelljs/shelljs#269 lands, use `error()`
|
|
SUCCESS: 0
|
|
};
|
|
|
|
var CMD_BLOCKLIST = exports.CMD_BLOCKLIST = ['cd', 'pushd', 'popd', 'dirs', 'set', 'exit', 'exec', 'ShellString'];
|
|
|
|
var OPTION_BLOCKLIST = exports.OPTION_BLOCKLIST = ['globOptions', // we don't have good control over globbing in the shell
|
|
'execPath', // we don't currently support exec
|
|
'bufLength', // we don't use buffers in shx
|
|
'maxdepth'];
|
|
|
|
var CONFIG_FILE = exports.CONFIG_FILE = '.shxrc.json';
|
|
|
|
var SHELLJS_PIPE_INFO = exports.SHELLJS_PIPE_INFO = {
|
|
cat: { minArgs: 1 },
|
|
grep: { minArgs: 2 },
|
|
head: { minArgs: 1 },
|
|
sed: { minArgs: 2 },
|
|
sort: { minArgs: 1 },
|
|
tail: { minArgs: 1 },
|
|
uniq: { minArgs: 1 }
|
|
};
|
|
|
|
// All valid options
|
|
var allOptionsList = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
|
|
|
|
var shouldReadStdin = exports.shouldReadStdin = function shouldReadStdin(args) {
|
|
var cmd = args[0];
|
|
var cmdInfo = SHELLJS_PIPE_INFO[cmd];
|
|
var parsedArgs = (0, _minimist2.default)(args.slice(1), {
|
|
stopEarly: true,
|
|
boolean: allOptionsList // treat all short options as booleans
|
|
});
|
|
var requiredNumArgs = cmdInfo ? cmdInfo.minArgs : -1;
|
|
|
|
// If a non-boolean option is passed in, increment the required argument
|
|
// count (this is the case for `-n` for `head` and `tail`)
|
|
if (parsedArgs.n && (cmd === 'head' || cmd === 'tail')) {
|
|
requiredNumArgs++;
|
|
}
|
|
|
|
return Boolean(!process.stdin.isTTY && parsedArgs._.length < requiredNumArgs);
|
|
}; |