codecrypto-cli
v1.0.8
Published
CLI tool for CodeCrypto operations
Readme
CodeCrypto CLI
CLI tool for CodeCrypto operations - Deploy, manage users, configure settings, and handle database operations.
Instalación
Usando NPX (sin instalación)
npx codecrypto-cli [command]Instalación Global
npm install -g codecrypto-cli
codecrypto [command]Instalación Local (desarrollo)
git clone <repository>
cd cli-cc
npm install
npm run build
npm linkComandos Disponibles
📦 Deploy
Despliega tu aplicación en diferentes entornos.
# Despliegue básico
codecrypto deploy
# Despliegue con opciones
codecrypto deploy --env prod --branch main --region us-west-2
# Despliegue sin tests
codecrypto deploy --skip-tests
# Simulación (dry-run)
codecrypto deploy --dry-runOpciones:
-e, --env <environment>- Entorno (dev, staging, prod). Default:dev-b, --branch <branch>- Rama de Git. Default:main-r, --region <region>- Región AWS. Default:us-east-1--skip-tests- Omitir tests antes del deployment--dry-run- Simular sin ejecutar
Ejemplos:
# Desplegar a producción desde rama release
codecrypto deploy -e prod -b release
# Desplegar a staging sin tests
codecrypto deploy -e staging --skip-tests
# Simular despliegue a producción
codecrypto deploy -e prod --dry-run👤 User
Gestiona usuarios en el sistema.
Crear Usuario
# Modo interactivo
codecrypto user create --interactive
# Con parámetros
codecrypto user create -u john_doe -e [email protected] -r admin
# Modo mixto (parámetros + interactivo)
codecrypto user create -u john_doe --interactiveOpciones:
-u, --username <username>- Nombre de usuario-e, --email <email>- Correo electrónico-r, --role <role>- Rol (admin, user, guest). Default:user--interactive- Modo interactivo
Ejemplos:
# Crear admin
codecrypto user create -u admin_user -e [email protected] -r admin
# Crear usuario guest
codecrypto user create -u guest01 -e [email protected] -r guestListar Usuarios
# Listar todos
codecrypto user list
# Filtrar por rol
codecrypto user list -r admin
# Limitar resultados
codecrypto user list -l 5Opciones:
-r, --role <role>- Filtrar por rol-l, --limit <number>- Límite de resultados. Default:10
Eliminar Usuario
# Con confirmación
codecrypto user delete 123
# Sin confirmación (forzar)
codecrypto user delete 123 --forceOpciones:
-f, --force- Omitir confirmación
⚙️ Config
Gestiona la configuración del CLI.
Set (Establecer valor)
# Configuración local
codecrypto config set api.url https://api.example.com
# Configuración global
codecrypto config set api.token my-secret-token --globalOpciones:
-g, --global- Configuración global
Ejemplos:
codecrypto config set default.region us-west-2
codecrypto config set api.timeout 5000 --globalGet (Obtener valor)
codecrypto config get api.url
codecrypto config get default.regionList (Listar configuración)
# Configuración local
codecrypto config list
# Configuración global
codecrypto config list --globalOpciones:
-g, --global- Mostrar configuración global
💾 Database (db)
Operaciones de base de datos.
Migraciones
# Ejecutar migraciones
codecrypto db migrate
# Ejecutar en producción
codecrypto db migrate -e prod
# Rollback última migración
codecrypto db migrate --rollback
# Rollback 3 migraciones
codecrypto db migrate --rollback --steps 3Opciones:
-e, --env <environment>- Entorno. Default:dev--rollback- Revertir migración--steps <number>- Número de migraciones. Default:all
Seed (Poblar datos)
# Seed básico
codecrypto db seed
# Limpiar y seed
codecrypto db seed --clear
# Seed archivo específico
codecrypto db seed -f users.sql
# Seed en staging
codecrypto db seed -e stagingOpciones:
-e, --env <environment>- Entorno. Default:dev-f, --file <file>- Archivo seed específico--clear- Limpiar datos existentes
Backup
# Crear backup
codecrypto db backup my-backup
# Backup de producción
codecrypto db backup prod-backup -e prod
# Backup sin comprimir
codecrypto db backup test-backup --compress false
# Especificar directorio
codecrypto db backup daily-backup -o /backups/dailyOpciones:
-e, --env <environment>- Entorno origen. Default:prod-o, --output <path>- Directorio de salida. Default:./backups--compress- Comprimir archivo. Default:true
Restore
# Restaurar en dev
codecrypto db restore backup_2024-01-15.sql.gz
# Restaurar en staging
codecrypto db restore backup.sql -e staging
# Restaurar en prod (requiere --force)
codecrypto db restore backup.sql -e prod --forceOpciones:
-e, --env <environment>- Entorno destino. Default:dev--force- Omitir confirmación (requerido para prod)
Ayuda
# Ayuda general
codecrypto --help
# Ayuda de comando específico
codecrypto deploy --help
codecrypto user --help
codecrypto user create --help
codecrypto db --help
codecrypto db migrate --helpEjemplos de Uso Completo
Workflow de Deployment
# 1. Configurar ambiente
codecrypto config set api.url https://api.myapp.com
codecrypto config set default.region us-east-1
# 2. Ejecutar migraciones
codecrypto db migrate -e staging
# 3. Deploy a staging
codecrypto deploy -e staging -b develop
# 4. Si todo OK, deploy a producción
codecrypto deploy -e prod -b mainSetup Inicial de DB
# 1. Crear backup de seguridad
codecrypto db backup safety-backup -e prod
# 2. Ejecutar migraciones
codecrypto db migrate -e dev
# 3. Poblar datos de prueba
codecrypto db seed --clearGestión de Usuarios
# Crear varios usuarios
codecrypto user create -u admin -e [email protected] -r admin
codecrypto user create -u user1 -e [email protected] -r user
codecrypto user create -u guest1 -e [email protected] -r guest
# Listar usuarios admin
codecrypto user list -r admin
# Eliminar usuario
codecrypto user delete 5 --forceDesarrollo
Estructura del Proyecto
cli-cc/
├── src/
│ ├── index.ts # Punto de entrada
│ └── commands/
│ ├── deploy.ts # Comando deploy
│ ├── user.ts # Comando user
│ ├── config.ts # Comando config
│ └── database.ts # Comando db
├── dist/ # Build output
├── package.json
├── tsconfig.json
└── README.mdScripts de Desarrollo
# Instalar dependencias
npm install
# Desarrollo (ejecutar sin compilar)
npm run dev -- deploy --help
# Compilar
npm run build
# Probar compilado
npm run test
# Testear localmente con npm link
npm link
codecrypto --helpCompilar y Probar
# Build
npm run build
# Probar comando compilado
node dist/index.js --help
node dist/index.js deploy --dry-run
node dist/index.js user create --interactivePublicación a NPM
1. Preparación
Asegúrate de tener una cuenta en npmjs.com y estar logueado:
npm login2. Actualizar package.json
Verifica que tu package.json tenga:
name: Nombre único en NPM (verifica disponibilidad en npmjs.com)version: Versión semántica (ej: 1.0.0)description: Descripción clarakeywords: Para búsquedasauthor: Tu informaciónlicense: Tipo de licenciabin: Configurado correctamentefiles: Archivos a incluir (opcional)
{
"name": "codecrypto-cli",
"version": "1.0.0",
"files": ["dist", "README.md"],
...
}3. Verificar el nombre
# Verificar si el nombre está disponible
npm search codecrypto-cliSi está ocupado, cambia el nombre en package.json:
{
"name": "@tu-usuario/codecrypto-cli"
}4. Build Final
npm run build5. Probar el paquete localmente
# Simular publicación (ver qué archivos se incluirán)
npm pack
# Esto crea un archivo .tgz que puedes inspeccionar
# Descomprímelo y verifica el contenido6. Publicar
# Publicación pública
npm publish
# Si usas scoped package (@usuario/nombre)
npm publish --access public7. Verificar
# Probar instalación
npx codecrypto-cli@latest --help
# O con el nombre real de tu paquete
npx tu-paquete --help8. Actualizar Versiones
Cuando hagas cambios:
# Patch (1.0.0 -> 1.0.1) - bug fixes
npm version patch
# Minor (1.0.0 -> 1.1.0) - nuevas features
npm version minor
# Major (1.0.0 -> 2.0.0) - breaking changes
npm version major
# Publicar nueva versión
npm publishWorkflow Completo de Publicación
# 1. Asegurarte que todo funciona
npm run build
npm run test
# 2. Login a NPM
npm login
# 3. Verificar nombre disponible
npm search codecrypto-cli
# 4. Publicar
npm publish --access public
# 5. Verificar
npx codecrypto-cli --help
# 6. Para actualizaciones futuras
npm version patch
npm publishDespublicar (si es necesario)
# Solo dentro de las primeras 72 horas
npm unpublish [email protected]
# Despublicar todas las versiones (usar con cuidado)
npm unpublish codecrypto-cli --forceMejores Prácticas
Versionado Semántico: Usa semver
- MAJOR: Cambios incompatibles
- MINOR: Nuevas funcionalidades compatibles
- PATCH: Bug fixes
README: Mantén documentación actualizada
CHANGELOG: Documenta cambios en cada versión
Testing: Prueba antes de publicar
Git Tags: Crea tags para cada versión
git tag v1.0.0 git push --tags
Troubleshooting
Error: "command not found"
- Verifica que
binen package.json apunte adist/index.js - El archivo debe tener shebang:
#!/usr/bin/env node - Asegúrate de compilar:
npm run build
Error: "permission denied"
# Linux/Mac
chmod +x dist/index.jsError al publicar
- Verifica que estés logueado:
npm whoami - El nombre no existe: Cambia el nombre en package.json
- Necesitas acceso: Usa
--access publicpara scoped packages
Recursos
- Commander.js - Framework CLI
- Chalk - Colores en terminal
- Inquirer - Prompts interactivos
- Ora - Spinners
- NPM Publishing Guide
Licencia
MIT
