53 lines
1.3 KiB
JavaScript
Executable File
53 lines
1.3 KiB
JavaScript
Executable File
module.exports = {
|
|
exists: exists,
|
|
get: get
|
|
};
|
|
|
|
const fs = require('fs'),
|
|
path = require('path');
|
|
|
|
const commandsFilePath = path.join(__dirname, '..', 'conf', 'text_commands');
|
|
|
|
// Read in basic text commands / definitions and watch for changes
|
|
let commands = parseCommands(commandsFilePath);
|
|
fs.watchFile(commandsFilePath, (curr, prev) => {
|
|
if (curr.mtime !== prev.mtime) {
|
|
commands = parseCommands(commandsFilePath);
|
|
}
|
|
});
|
|
|
|
// Read/parse text commands from the "database"
|
|
function parseCommands(filePath)
|
|
{
|
|
let commands = {};
|
|
let data = fs.readFileSync(filePath, 'utf-8');
|
|
let commandLines = data.toString().split('\n');
|
|
let commandParts;
|
|
let aliases;
|
|
commandLines.forEach(function(line) {
|
|
if (line.length > 0 && line.indexOf('|') !== -1) {
|
|
commandParts = line.split('|');
|
|
// check for aliases
|
|
aliases = commandParts[0].split(',');
|
|
aliases.forEach(function(cmd) {
|
|
commands[cmd] = commandParts[1];
|
|
//console.log(`!${cmd},`);
|
|
});
|
|
}
|
|
});
|
|
return commands;
|
|
}
|
|
|
|
function exists(command)
|
|
{
|
|
return commands.hasOwnProperty(command);
|
|
}
|
|
|
|
function get(command)
|
|
{
|
|
if (exists(command)) {
|
|
return commands[command];
|
|
} else {
|
|
return undefined;
|
|
}
|
|
} |