mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
c0305af2c4
PR-URL: https://github.com/nodejs/node/pull/29778 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
// Create the REPL if `-i` or `--interactive` is passed, or if
|
|
// the main module is not specified and stdin is a TTY.
|
|
|
|
const {
|
|
prepareMainThreadExecution
|
|
} = require('internal/bootstrap/pre_execution');
|
|
|
|
const {
|
|
evalScript
|
|
} = require('internal/process/execution');
|
|
|
|
const console = require('internal/console/global');
|
|
|
|
const { getOptionValue } = require('internal/options');
|
|
|
|
prepareMainThreadExecution();
|
|
|
|
markBootstrapComplete();
|
|
|
|
if (process.env.NODE_REPL_EXTERNAL_MODULE) {
|
|
require('internal/modules/cjs/loader')
|
|
.Module
|
|
._load(process.env.NODE_REPL_EXTERNAL_MODULE, undefined, true);
|
|
} else {
|
|
// --input-type flag not supported in REPL
|
|
if (getOptionValue('--input-type')) {
|
|
// If we can't write to stderr, we'd like to make this a noop,
|
|
// so use console.error.
|
|
console.error('Cannot specify --input-type for REPL');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`Welcome to Node.js ${process.version}.\n` +
|
|
'Type ".help" for more information.');
|
|
|
|
const cliRepl = require('internal/repl');
|
|
cliRepl.createInternalRepl(process.env, (err, repl) => {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
repl.on('exit', () => {
|
|
if (repl._flushing) {
|
|
repl.pause();
|
|
return repl.once('flushHistory', () => {
|
|
process.exit();
|
|
});
|
|
}
|
|
process.exit();
|
|
});
|
|
});
|
|
|
|
// If user passed '-e' or '--eval' along with `-i` or `--interactive`,
|
|
// evaluate the code in the current context.
|
|
if (getOptionValue('[has_eval_string]')) {
|
|
evalScript('[eval]',
|
|
getOptionValue('--eval'),
|
|
getOptionValue('--inspect-brk'),
|
|
getOptionValue('--print'));
|
|
}
|
|
}
|