blob: 8fd02a1ef4d64675ae26fff4a624e42e1ac24363 (
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
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/*
Description: Outputs the current command module list or command categories
*/
const stripIndents = require('common-tags').stripIndents;
exports.run = async (core, server, socket, data) => {
// TODO: this module needs to be clean up badly :(
// verify passed arguments
let typeDt = typeof data.type;
let catDt = typeof data.category;
let cmdDt = typeof data.command;
if (typeDt !== 'undefined' && typeDt !== 'string' ) {
return;
} else if (catDt !== 'undefined' && catDt !== 'string' ) {
return;
} else if (cmdDt !== 'undefined' && cmdDt !== 'string' ) {
return;
}
// set default reply
let reply = stripIndents`Help usage:
Show all categories -> { cmd: 'help', type: 'categories' }
Show all commands in category -> { cmd: 'help', category: '<category name>' }
Show specific command -> { cmd: 'help', command: '<command name>' }`;
// change reply based on query
if (typeDt !== 'undefined') {
let categories = core.commands.categories().sort();
reply = `Command Categories:\n${categories.map(c => `- ${c.replace('../src/commands/', '')}`).join('\n')}`;
} else if (catDt !== 'undefined') {
let catCommands = core.commands.all('../src/commands/' + data.category).sort((a, b) => a.info.name.localeCompare(b.info.name));
reply = `${data.category} commands:\n${catCommands.map(c => `- ${c.info.name}`).join('\n')}`;
} else if (cmdDt !== 'undefined') {
let command = core.commands.get(data.command);
reply = stripIndents`
Usage: ${command.info.usage || command.info.name}
Description: ${command.info.description || '¯\_(ツ)_/¯'}`;
}
// output reply
server.reply({
cmd: 'info',
text: reply
}, socket);
};
exports.info = {
name: 'help',
usage: 'help ([ type:categories] | [category:<category name> | command:<command name> ])',
description: 'Outputs information about the servers current protocol'
};
|