1.0.14 • Published 4 years ago
gnu-screen v1.0.14
What is this ?
This was build to handle and manage minecraft servers first, but actually only use Linux so if you have another OS you may have some bugs.
Table of Contents
Required
- NodeJs: 12.16.0
- GNU-Screen: 4.08.00
Installation
First make sure you have gnu-screen installed:
$ apt-get install screenTo run this project, install it locally using npm:
$ npm i gnu-screenFunctions
getAll()Return all available Screens.
Screen
Create a representation of gnu-screen session : Screen(id, mode="").
If you want to save logs change mode to 's'.
Extend events.EventEmitter.
Events:
closeWhen screen is closed.stdoutStringWhen something new is append in logFile.
Methods:
Screen.exist()Check if screen's session is running.Screen.setup()Fetch self variable with running session.Screen.setRule(...rules)Rules to apply in screen session.Screen.write(...stdins)Write something in screen session.Screen.setStdout(state)Watch over logFile to callstdoutEvent.Screen.logFile()Return logFile.Screen.run(stdin=null)Connect/create to screen session.Screen.close()Close screen session.Screen.kill(signal="SIGKILL")Kill screen session.
KeyValues:
Screen.idString | nullScreen session's id.Screen.logFilePathString | nullPath of logFile is there one.Screen.pidInt | nullPid of screen session if is running.Screen.dateString | nullDate of screen session if is running.Screen.stateString | nullState of screen session if is running.
Exemple
const SC = require("gnu-screen")
// Generate 10 screens session
for (n = 0; n < 10; n++) {
scr = new SC.Screen(id=`test n°${n}`);
console.log(scr);
scr.run();
}
// Find and close the 10 screens session
SC.getAll().forEach((scr) => {
console.log(scr);
scr.close();
})
// Create and start a screen session
test = new SC.Screen(id="final test", mode="s");
test.run();
console.log(test);
// Allow "stdout" event
test.setStdout()
// Close the screen session
function close() {
test.close();
if (!test.pid) {
console.log("Closed final test's screen session");
} else {
test.kill();
console.log("Killed test's screen session");
}
//self kill
process.exit();
}
// Get stdout from screen session
test.on("stdout", log => {
console.log("stdout:", log);
if (log.includes("!close")) {
close();
}
});
// Pipe input to the screen session
process.stdin.on('data', (stdin) => test.write(stdin));
// Capture Ctrl + C to close screen session
process.on('SIGINT', () => close());