UNPKG

890 BJavaScriptView Raw
1const { readFileSync: read } = require('fs');
2const { join } = require('path');
3
4const { CommandError } = require('./Command');
5
6function load() {
7 const dataPath = join(__dirname, '../../data/commands.json');
8 const dataFile = read(dataPath, 'utf-8');
9 const commands = JSON.parse(dataFile);
10
11 for (const command of Object.keys(commands)) {
12 const commandModule = commands[command];
13 let CommandClass;
14
15 try {
16 // eslint-disable-next-line global-require, import/no-dynamic-require
17 CommandClass = require(commandModule);
18 } catch (e) {
19 throw new CommandError(`The command module '${commandModule}' was not found.`);
20 }
21
22 commands[command] = new CommandClass();
23 }
24
25 return commands;
26}
27
28module.exports = {
29 CommandError,
30 help() {
31 const result = Object.keys(load())
32 .sort()
33 .join('\n ');
34
35 return ` ${result}`;
36 },
37
38 load
39};