mirror of
https://github.com/sern-handler/cli
synced 2026-06-28 02:32:20 +00:00
70 lines
2.5 KiB
TypeScript
70 lines
2.5 KiB
TypeScript
import { blueBright, bold, cyanBright, greenBright, italic, magentaBright, underline } from 'colorette';
|
|
import { getSern } from '../utilities/getSern';
|
|
import { readFileSync } from 'node:fs';
|
|
import type { CommandData, GuildId } from '../utilities/types';
|
|
|
|
export function list() {
|
|
const files = getSern();
|
|
if (!files.includes('command-data-remote.json')) {
|
|
console.error(`No commands found\nPlease run ${cyanBright('sern commands publish')} to publish your commands`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const commands: Record<GuildId, CommandData[]> = JSON.parse(readFileSync('.sern/command-data-remote.json', 'utf-8'));
|
|
const globalCommands = commands.global;
|
|
|
|
delete commands.global;
|
|
if(globalCommands) {
|
|
console.log(bold('Global Commands'));
|
|
for (const command of globalCommands) log(command);
|
|
}
|
|
|
|
console.log('\t');
|
|
|
|
for (const guildId in commands) {
|
|
const guildCommands = commands[guildId];
|
|
console.log(`${bold('Guild Commands')} [${underline(cyanBright(guildId))}]`);
|
|
for (const command of guildCommands) log(command);
|
|
}
|
|
}
|
|
|
|
const AppCommandsType: Record<number, string> = {
|
|
1: magentaBright('Slash'),
|
|
2: magentaBright('User'),
|
|
3: magentaBright('Message'),
|
|
};
|
|
|
|
const AppCommandOptionType: Record<number, string> = {
|
|
1: magentaBright('SubCommand'),
|
|
2: magentaBright('SubCommand Group'),
|
|
3: magentaBright('String'),
|
|
4: magentaBright('Integer'),
|
|
5: magentaBright('Boolean'),
|
|
6: magentaBright('User'),
|
|
7: magentaBright('Channel'),
|
|
8: magentaBright('Role'),
|
|
9: magentaBright('Mentionable'),
|
|
10: magentaBright('Number'),
|
|
11: magentaBright('Attachment'),
|
|
};
|
|
|
|
function log(command: CommandData) {
|
|
console.log(clean(`\t${cyanBright(command.name)} ${italic(command.description)} (${greenBright(command.id)})`));
|
|
console.log(`\t Type: ${AppCommandsType[command.type]}`);
|
|
|
|
if (command.options) {
|
|
console.log(`\t Options:`);
|
|
for (const option of command.options) {
|
|
console.log(`\t ${blueBright(option.name)}: ${AppCommandOptionType[option.type]}`);
|
|
if (option.options) {
|
|
console.log(`\t Options:`);
|
|
for (const subOption of option.options) {
|
|
console.log(`\t ${cyanBright(subOption.name)}: ${AppCommandOptionType[subOption.type]}`);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const clean = (str: string) => str.split(' ').filter(Boolean).join(' ');
|