Hzjshz / start-code-server.js
Hxbzbb7272's picture
Create start-code-server.js
c8b81aa verified
Raw
History Blame Contribute Delete
1.8 kB
const { spawn } = require('child_process');
const readline = require('readline');
// Spawn code-server process with given arguments
const codeServer = spawn('code-server', ['--bind-addr', '127.0.0.1:5900', '--auth', 'none'], {
stdio: ['pipe', 'pipe', 'pipe']
});
// Print stdout from code-server
codeServer.stdout.on('data', (data) => {
process.stdout.write(`[code-server stdout]: ${data}`);
});
// Print stderr from code-server
codeServer.stderr.on('data', (data) => {
process.stderr.write(`[code-server stderr]: ${data}`);
});
// Handle process exit
codeServer.on('close', (code) => {
console.log(`code-server exited with code ${code}`);
process.exit(code);
});
// Handle errors
codeServer.on('error', (err) => {
console.error(`Failed to start code-server: ${err}`);
});
// Setup readline interface for user input from terminal
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
prompt: 'Enter your next terminal command here> '
});
// Prompt user for input
rl.prompt();
// On user input, send the command to the shell to execute
rl.on('line', (line) => {
const trimmed = line.trim();
if (trimmed.toLowerCase() === 'exit' || trimmed.toLowerCase() === 'quit') {
console.log('Exiting...');
codeServer.kill();
rl.close();
return;
}
// Spawn a shell to execute the user command
const shell = spawn(trimmed, { shell: true, stdio: 'inherit' });
shell.on('exit', (code) => {
console.log(`Command "${trimmed}" exited with code ${code}`);
rl.prompt();
});
shell.on('error', (err) => {
console.error(`Failed to execute command "${trimmed}": ${err}`);
rl.prompt();
});
});
// On readline close
rl.on('close', () => {
console.log('Input closed.');
codeServer.kill();
process.exit(0);
});