plazbot-cli
Version:
CLI para Plazbot SDK
63 lines (52 loc) • 2.15 kB
text/typescript
import { Command } from 'commander';
import { Portal } from 'plazbot';
import { getStoredCredentials } from '../../utils/credentials';
import { logger } from '../../utils/logger';
import { PortalCommandOptions, PortalResponse } from '../../types/portal';
import inquirer from 'inquirer';
export const deleteCommand = new Command('delete')
.description('Elimina un portal')
.argument('<portalId>', 'ID del portal')
.option('--force', 'Eliminar sin confirmación', false)
.option('--dev', 'Usar ambiente de desarrollo', false)
.action(async (portalId: string, options: PortalCommandOptions) => {
try {
// Obtener credenciales guardadas
const credentials = await getStoredCredentials();
const portal = new Portal({
workspaceId: credentials.workspace,
apiKey: credentials.apiKey,
zone: credentials.zone,
...(options.dev && { customUrl: "http://localhost:5090" })
});
// Obtener detalles del portal para mostrar qué se va a eliminar
const portalDetails = await portal.getPortal(portalId) as PortalResponse;
logger.info('\n🗑️ Portal a eliminar:');
logger.divider();
logger.info(`ID: ${portalDetails.portal.id}`);
logger.info(`Nombre: ${portalDetails.portal.name}`);
logger.info(`URL: ${portalDetails.portal.url}`);
if (!options.force) {
const { confirm } = await inquirer.prompt([{
type: 'confirm',
name: 'confirm',
message: '¿Estás seguro de que quieres eliminar este portal?',
default: false
}]);
if (!confirm) {
logger.info('Operación cancelada.');
return;
}
}
logger.info('\n🔄 Eliminando portal...');
await portal.deletePortal(portalId);
logger.success('Portal eliminado exitosamente');
if (options.dev) {
logger.warning('\nAmbiente: desarrollo');
}
} catch (error) {
const message = error instanceof Error ? error.message : 'Error desconocido al eliminar el portal';
logger.error(message);
process.exit(1);
}
});