NOTE This repository is not maintained, and I recently found a much more comprehensive solution: dthree/vorpal.
A simple, event-based, programmatic read-eval-print loop
var repl = require('prepl')();
repl.start();
Use nc to connect:
$ nc -u prepl.sock
> help
COMMAND DESCRIPTION
help Display this help message
exit Disconnect from REPL
> exit
$
Default configuration:
{
"name": "prepl",
"socket": "prepl.sock"
}
name
: name of the application using prepl. Default:prepl
.socket
: path to the socket to be used. Default:prepl.sock
. See net.Server.listen(path, [callback])address
: IP address to which the net server will bind. Defaultundefined
. See net.Server.listen(port, [host], [backlog], [callback])port
: the TCP port to which the net server will bind. Defaultundefined
. See net.Server.listen(port, [host], [backlog], [callback])
Exposed by require('prepl')
.
Creates a new Prepl
. Works with and without new
:
var prepl = require('prepl')();
// or
var Prepl = require('prepl');
var repl = new Prepl();
Optionally, the first argument of the Server constructor may be an options object to be passed to Prepl.configure.
- options
Object
A hash of options to override defaults
Configure the REPL:
repl.configure({
address: '0.0.0.0',
port: 1338,
socket: undefined
});
- commands
Array
An array of commands to be registered
Registers the list of commands with the REPL. Command have a name identifier, a message to describe the command in the help menu, and a function to carry out the given command. This function is passed the socket object of the client connection to allow output to the client terminal. names may not exceed 15 characters.
var server = new MyServerApp({foo:'bar'};
repl.register([{
name: "start",
help: "Start the application",
action: function () {
console.log('cluster started');
},
},
{
name: "restart",
help: "Restart the application",
action: function () {
console.log('cluster restarted');
}
},
{
name: 'update',
help: 'Update the server\'s cached memory',
action: function (socket) {
server.update(function () {
socket.write('cache updated');
}
}
})
]);
The command(s) will be now available and listed in the help menu.
> help
COMMAND DESCRIPTION
help Display this help message
exit Disconnect from REPL
start Start the application
restart Restart the application
>
- name
String
command to be unregistered
Unregister the given action:
repl.unregister('start');
The command will no longer be available or listen in the help menu:
> help
COMMAND DESCRIPTION
help Display this help message
exit Disconnect from REPL
restart Restart the application
>
- done
Function
Optional callback to be called when REPL has started
Start the REPL:
repl.start(function () {
console.log('the REPL server is now ready!');
})
- done
Function
Optional callback to be called when REPL has stopped
Stop the REPL:
repl.stop(function () {
console.log('the REPL server has now stopped!');
})
Emitted before the REPL server starts:
repl.on('starting', function onReplStarting () {
console.log('starting REPL server...');
});
Emitted before the REPL server stops:
repl.on('stopping', function onReplStopping () {
console.log('stopping REPL server...');
});
Emitted once the REPL server has stopped:
repl.on('stopped', function onReplStopped () {
console.log('REPL server stopped!');
});
Emitted once the REPL server is ready:
repl.on('ready', function onReplReady () {
console.log('the REPL server is ready!');
});