Files
conquest/src/modules/manager.nim

48 lines
1.3 KiB
Nim

import tables, strformat
import ../common/types
# Import modules
import
shell,
sleep,
filesystem,
filetransfer,
environment,
bof,
dotnet,
screenshot
type
ModuleManager* = object
commandsByType*: Table[CommandType, Command]
commandsByName*: Table[string, Command]
var manager: ModuleManager
proc registerCommands(commands: seq[Command]) {.discardable.} =
for cmd in commands:
manager.commandsByType[cmd.commandType] = cmd
manager.commandsByName[cmd.name] = cmd
proc loadModules*() =
# Register all imported commands
registerCommands(shell.commands)
registerCommands(sleep.commands)
registerCommands(filesystem.commands)
registerCommands(filetransfer.commands)
registerCommands(environment.commands)
registerCommands(bof.commands)
registerCommands(dotnet.commands)
registerCommands(screenshot.commands)
proc getCommandByType*(cmdType: CommandType): Command =
return manager.commandsByType[cmdType]
proc getCommandByName*(cmdName: string): Command =
try:
return manager.commandsByName[cmdName]
except ValueError:
raise newException(ValueError, fmt"The command '{cmdName}' does not exist.")
proc getAvailableCommands*(): Table[string, Command] =
return manager.commandsByName