2024-04-25 20:24:29 +00:00

68 lines
1.8 KiB
JavaScript

import repl from "node:repl"
export default class RELP {
constructor(handlers) {
this.handlers = handlers
repl.start({
prompt: "> ",
useGlobal: true,
eval: (input, context, filename, callback) => {
let inputs = input.split(" ")
// remove last \n from input
inputs[inputs.length - 1] = inputs[inputs.length - 1].replace(/\n/g, "")
// find relp command
const command = inputs[0]
const args = inputs.slice(1)
const command_fn = this.commands.find((relp_command) => {
let exising = false
if (Array.isArray(relp_command.aliases)) {
exising = relp_command.aliases.includes(command)
}
if (relp_command.cmd === command) {
exising = true
}
return exising
})
if (!command_fn) {
return callback(`Command not found: ${command}`)
}
return command_fn.fn(callback, ...args)
}
})
}
commands = [
{
cmd: "select",
aliases: ["s", "sel"],
fn: (cb, service) => {
this.handlers.detachAllServicesSTD()
return this.handlers.attachServiceSTD(service)
}
},
{
cmd: "reload",
aliases: ["r"],
fn: () => {
this.handlers.reloadService()
}
},
{
cmd: "exit",
aliases: ["e"],
fn: () => {
process.exit(0)
}
}
]
}