blob: 1104883de661f3ba669dc252406d1971b893d803 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// Extracted from newOS4 index.html — ModuleManagerModule
class ModuleManagerModule {
constructor() { this.commands = {}; this.terminal = null; }
getHelpInfo() {
return {
'modules': 'modules — Open the module manager GUI',
'listmods': 'listmods — List all loaded modules with status',
'loadmod': 'loadmod <url> — Load a module from a URL',
'removemod': 'removemod <name> — Remove a loaded module by name',
'startup-modules': 'startup-modules — Open the startup modules selector',
'load-local': 'load-local <path> — Load a module from VFS or URL',
'loadlocal': 'loadlocal <path> — Alias for load-local',
};
}
registerCommands() {
this.commands['modules'] = () => { this.terminal.openModuleManager(); };
this.commands['loadmod'] = async (args) => {
if(!args[0]) return this.terminal.print("Usage: loadmod <url>", 'warning');
await this.terminal.moduleManager.loadModuleFromURL(args[0]);
this.terminal.renderModuleList();
};
this.commands['removemod'] = (args) => {
if(!args[0]) return this.terminal.print("Usage: removemod <name>", 'warning');
if(this.terminal.moduleManager.unregisterModule(args[0])) {
this.terminal.print(`Module '${args[0]}' removed`, 'success');
} else {
this.terminal.print(`Module not found: ${args[0]}`, 'error');
}
};
this.commands['listmods'] = () => {
const mods = this.terminal.moduleManager.getModuleList();
if(mods.length === 0) return this.terminal.print("No modules loaded");
mods.forEach(m => {
const status = m.loaded ? '✓' : '✗';
const badge = m.url ? '' : ' [Built-in]';
this.terminal.print(`${status} ${m.name}${badge}`);
});
};
}
}
|