This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Doric/doric-cli/scripts/server.js

61 lines
2.5 KiB
JavaScript
Raw Normal View History

2019-08-03 10:19:56 +08:00
const ws = require('nodejs-websocket')
2019-11-12 20:45:57 +08:00
const { exec, spawn } = require('child_process')
2019-08-03 10:19:56 +08:00
const createServer = () => {
let server = ws.createServer(connection => {
2019-08-13 17:39:07 +08:00
console.log('connected', connection.key)
2019-08-03 10:19:56 +08:00
connection.on('text', function (result) {
2019-08-13 17:39:07 +08:00
console.log('text', result)
2019-11-12 10:44:43 +08:00
let resultObject = JSON.parse(result)
switch(resultObject.cmd) {
case 'DEBUG':
let contextId = resultObject.data.contextId
let projectHome = resultObject.data.projectHome
console.log(projectHome)
2019-11-12 20:04:18 +08:00
{
const code = spawn('code', [projectHome, projectHome + "/src/Snake.ts"])
code.stdout.on('data', (data) => {
console.log(`stdout: ${data}`)
})
code.stderr.on('data', (data) => {
console.error(`stderr: ${data}`)
})
code.on('close', (code) => {
console.log(`child process exited with code ${code}`)
})
}
2019-11-12 20:45:57 +08:00
{
setTimeout(() => {
exec('osascript -e \'tell application "System Events"\ntell application "Visual Studio Code" to activate\nkey code 96\nend tell\'', (err, stdout, stderr) => {
if (err) {
// node couldn't execute the command
console.log(`stdout: ${err}`)
return;
}
// the *entire* stdout and stderr (buffered)
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
})
}, 4000)
}
2019-11-12 16:43:30 +08:00
2019-11-12 10:44:43 +08:00
break
}
2019-08-03 10:19:56 +08:00
})
connection.on('connect', function (code) {
2019-08-13 17:39:07 +08:00
console.log('connect', code)
2019-08-03 10:19:56 +08:00
})
connection.on('close', function (code) {
2019-08-13 17:39:07 +08:00
console.log('close', code)
2019-08-03 10:19:56 +08:00
})
connection.on('error', function (code) {
2019-08-13 17:39:07 +08:00
console.log('error', code)
2019-08-03 10:19:56 +08:00
})
})
return server
}
module.exports = createServer()