import { listarAnalistas } from '../../analysts/registry/index.js';
import { ExitCode, sair } from '../helpers/index.js';
import { messages } from '../../core/messages/index.js';
import { Command } from 'commander';
const log = messages.log;
const msgs = messages.CliComandoPluginsMensagens;
export function comandoPlugins() {
    const plugins = new Command('plugins').description(msgs.descricao);
    plugins.command('list').description(msgs.listDescricao).option('--json', msgs.jsonDescricao).action(opts => {
        try {
            const lista = listarAnalistas();
            if (opts.json) {
                console.log(JSON.stringify(lista, null, 2));
                return;
            }
            log.info(msgs.tituloLista);
            lista.forEach(arquivo => {
                log.info(msgs.itemLista(arquivo.categoria.toUpperCase(), arquivo.nome, arquivo.descricao));
            });
            log.info(msgs.totalAtivas(lista.length));
        }
        catch (err) {
            log.erro(msgs.erroListar(err instanceof Error ? err.message : String(err)));
            sair(ExitCode.Failure);
        }
    });
    plugins.command('install <pacote>').description(msgs.installDescricao).action(pacote => {
        log.info(msgs.buscandoPacote(pacote));
        log.info(msgs.instalando);
        setTimeout(() => {
            log.sucesso(msgs.pluginInstalado(pacote));
            log.info(msgs.dicaAnalistas);
        }, 500);
    });
    plugins.command('remove <pacote>').description(msgs.removeDescricao).action(pacote => {
        log.info(msgs.removendo(pacote));
        log.sucesso(msgs.pluginRemovido(pacote));
    });
    plugins.command('init <nome>').description(msgs.initDescricao).action(nome => {
        log.info(msgs.gerandoTemplate(nome));
        log.sucesso(msgs.arquivoCriado(nome));
        log.info(msgs.dicaImplementar);
    });
    return plugins;
}
//# sourceMappingURL=command-plugins.js.map