mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 18:44:16 +00:00
68 lines
1.8 KiB
JavaScript
Executable File
68 lines
1.8 KiB
JavaScript
Executable File
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)
|
|
}
|
|
}
|
|
]
|
|
} |