mirror of https://github.com/vizality/vizality
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
import { toTitleCase } from '@vizality/util/string';
|
|
|
|
import settings from './settings';
|
|
import manage from './manage';
|
|
import enable from './enable';
|
|
import disable from './disable';
|
|
import stop from './stop';
|
|
import reload from './reload';
|
|
import list from './list';
|
|
import install from './install';
|
|
import uninstall from './uninstall';
|
|
|
|
export const commands = {
|
|
enable,
|
|
disable,
|
|
reload,
|
|
install,
|
|
uninstall,
|
|
settings,
|
|
manage,
|
|
list,
|
|
stop
|
|
};
|
|
|
|
export function registerCommands (type) {
|
|
vizality.api.commands.registerCommand({
|
|
command: type,
|
|
description: `Commands related to ${type}s.`,
|
|
// Not using Theme.svg icon here because it gets cut off
|
|
icon: type === 'plugin' ? 'Plugin' : 'Palette',
|
|
options: [
|
|
{ name: 'settings', required: true },
|
|
{ name: 'manage', required: true },
|
|
{ name: 'enable', required: true },
|
|
{ name: 'disable', required: true },
|
|
{ name: 'stop', required: true },
|
|
{ name: 'reload', required: true },
|
|
{ name: 'list', required: true },
|
|
{ name: 'install', required: true },
|
|
{ name: 'uninstall', required: true }
|
|
],
|
|
executor: args => {
|
|
const subcommand = commands[args[0]];
|
|
if (!subcommand) {
|
|
return {
|
|
send: false,
|
|
result: `\`${args[0]}\` is not a valid subcommand. Specify one of ${Object.keys(commands).map(cmd => `\`${cmd}\``).join(', ')}.`
|
|
};
|
|
}
|
|
|
|
return subcommand.executor(args.slice(1), type);
|
|
},
|
|
autocomplete: args => {
|
|
if (args[0] !== void 0 && args.length === 1) {
|
|
return {
|
|
commands: Object.values(commands).filter(({ command }) => command.includes(args[0].toLowerCase()))
|
|
};
|
|
}
|
|
|
|
const subcommand = commands[args[0]];
|
|
if (!subcommand || !subcommand.autocomplete) {
|
|
return false;
|
|
}
|
|
|
|
return subcommand.autocomplete(args.slice(1), type);
|
|
}
|
|
});
|
|
}
|