Files
Monkey-Test/WebDriverAgent/Inspector/node_modules/regexpu/bin/regexpu
T
2019-01-25 17:01:52 +08:00

113 lines
2.9 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
(function() {
var fs = require('fs');
var jsesc = require('jsesc');
var regexpu = require('../regexpu.js');
var strings = process.argv.splice(2);
var option = strings.shift();
var stdin = process.stdin;
var isFile = false;
var data;
var timeout;
var options = {};
var log = console.log;
var main = function() {
if (/^(?:-h|--help|undefined)$/.test(option)) {
log(
'regexpu v%s - https://mths.be/regexpu',
regexpu.version
);
log([
'\nUsage:\n',
'\tregexpu [-c | --code] [snippet ...]',
'\tregexpu [-f | --file] [file ...]',
'\tregexpu [-v | --version]',
'\tregexpu [-h | --help]',
'\nExamples:\n',
'\tregexpu -f foo-es6.js > foo-es5.js',
'\tregexpu -c \'var x = /foo.bar/u;\'',
'\techo \'var x = /foo.bar/u;\' | regexpu -c'
].join('\n'));
return process.exit(1);
}
if (/^(?:-v|--version)$/.test(option)) {
log('v%s', regexpu.version);
return process.exit(1);
}
if (/^(?:-f|--file)$/.test(option)) {
isFile = true;
} else if (!/^(?:-c|--code)$/.test(option)) {
log('Unrecognized option `%s`.', option);
log('Try `regexpu --help` for more information.');
return process.exit(1);
}
if (!strings.length) {
log('Error: option `%s` requires an argument.', option);
log('Try `regexpu --help` for more information.');
return process.exit(1);
}
strings.forEach(function(snippet) {
var result;
if (isFile) {
try {
snippet = fs.readFileSync(snippet, 'utf8');
} catch (exception) {
log('Error: no such file. (`%s`)', snippet);
return process.exit(1);
}
}
try {
result = regexpu.transpileCode(snippet);
log(result);
} catch (exception) {
log(exception.message + '\n');
log('Error: failed to transpile. Make sure the JavaScript code is valid.');
log('If you think this is a bug in regexpu, please report it:');
log('https://github.com/mathiasbynens/regexpu/issues/new');
log('\nStack trace using regexpu@%s:\n', regexpu.version);
log(exception.stack);
return process.exit(1);
}
});
// Return with exit status 0 outside of the `forEach` loop, in case
// multiple snippets or files were passed in.
return process.exit(0);
};
if (stdin.isTTY) {
// handle shell arguments
main();
} else {
// Either the script is called from within a non-TTY context, or `stdin`
// content is being piped in.
if (!process.stdout.isTTY) {
// The script was called from a non-TTY context. This is a rather uncommon
// use case we dont actively support. However, we dont want the script
// to wait forever in such cases, so…
timeout = setTimeout(function() {
// …if no piped data arrived after a whole minute, handle shell
// arguments instead.
main();
}, 60000);
}
data = '';
stdin.on('data', function(chunk) {
clearTimeout(timeout);
data += chunk;
});
stdin.on('end', function() {
strings.push(data.trim());
main();
});
stdin.resume();
}
}());