mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 03:20:12 +08:00
feat: push new pwd when 'cd'
This commit is contained in:
1 parent
096b7a7714
commit
f08ee333a7
3 files changed
+12
-5
No files matched your search
@@ -14,6 +14,7 @@
|
|||||||
"dockerode": "^3.3.5",
|
"dockerode": "^3.3.5",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"jsonwebtoken": "^9.0.1",
|
"jsonwebtoken": "^9.0.1",
|
||||||
|
"minimist": "^1.2.8",
|
||||||
"mongoose": "^7.4.0",
|
"mongoose": "^7.4.0",
|
||||||
"socket.io": "^4.7.1",
|
"socket.io": "^4.7.1",
|
||||||
"swagger-ui-express": "^5.0.0",
|
"swagger-ui-express": "^5.0.0",
|
||||||
|
|||||||
@@ -6,14 +6,15 @@ import { defaultUser, genSessionJWT } from '../utils/auth.js'
|
|||||||
const sessions = new Map()
|
const sessions = new Map()
|
||||||
|
|
||||||
function listenToSession(sessionId, event, callback) {
|
function listenToSession(sessionId, event, callback) {
|
||||||
sessions.set((sessionId, event), callback)
|
const callbacks = sessions.get((sessionId, event)) || []
|
||||||
|
sessions.set((sessionId, event), callbacks.concat(callback))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function pushToSession(sessionId, event, data) {
|
export function pushToSession(sessionId, event, data) {
|
||||||
console.log(sessions, sessionId, event, data)
|
console.log('Push:', sessionId, event)
|
||||||
const callback = sessions.get((sessionId, event))
|
const callbacks = sessions.get((sessionId, event))
|
||||||
if (callback) {
|
if (callbacks) {
|
||||||
callback(data)
|
callbacks.forEach((callback) => callback(data))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import minimist from 'minimist'
|
||||||
import Quest from '../models/quest.js'
|
import Quest from '../models/quest.js'
|
||||||
import { pushToSession } from '../api/socket.js'
|
import { pushToSession } from '../api/socket.js'
|
||||||
|
|
||||||
@@ -18,11 +19,15 @@ async function commandHandler(session, commandInput, additionalData) {
|
|||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const argv = minimist(commandInput.command.split(' '))
|
||||||
|
|
||||||
if ('discover' in additionalData) {
|
if ('discover' in additionalData) {
|
||||||
pushToSession(session.id, 'graph', {
|
pushToSession(session.id, 'graph', {
|
||||||
pwd: commandInput.pwd,
|
pwd: commandInput.pwd,
|
||||||
discover: additionalData.discover,
|
discover: additionalData.discover,
|
||||||
})
|
})
|
||||||
|
} else if (argv._[0] === 'cd') {
|
||||||
|
pushToSession(session.id, 'graph', { pwd: commandInput.pwd })
|
||||||
}
|
}
|
||||||
|
|
||||||
const commandMatch = checkMatch(stage.condition.command, commandInput.command)
|
const commandMatch = checkMatch(stage.condition.command, commandInput.command)
|
||||||
|
|||||||
Reference in new issue
Block a user