codecrypto-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm install)",
5
+ "Bash(npm run build:*)",
6
+ "Bash(node dist/index.js:*)"
7
+ ],
8
+ "deny": [],
9
+ "ask": []
10
+ }
11
+ }
package/PUBLISHING.md ADDED
@@ -0,0 +1,156 @@
1
+ # Guía de Publicación a NPM
2
+
3
+ ## Solución al Error 403 (2FA Requerido)
4
+
5
+ Tienes dos opciones:
6
+
7
+ ### Opción 1: Habilitar 2FA en tu cuenta NPM (Recomendado)
8
+
9
+ 1. **Ve a npmjs.com y habilita 2FA:**
10
+ - Visita: https://www.npmjs.com/settings/YOUR_USERNAME/profile
11
+ - Ve a la sección "Two-Factor Authentication"
12
+ - Elige "Authorization and Publishing" o "Authorization only"
13
+ - Escanea el código QR con una app como Google Authenticator o Authy
14
+
15
+ 2. **Publica con código 2FA:**
16
+ ```bash
17
+ npm publish --otp=123456
18
+ ```
19
+ (Reemplaza 123456 con el código de tu app de autenticación)
20
+
21
+ ### Opción 2: Usar un Access Token con permisos especiales
22
+
23
+ 1. **Crear un token de automatización:**
24
+ - Ve a: https://www.npmjs.com/settings/YOUR_USERNAME/tokens
25
+ - Click en "Generate New Token"
26
+ - Selecciona "Automation" (este tipo puede publicar sin 2FA)
27
+ - Copia el token generado
28
+
29
+ 2. **Configurar el token localmente:**
30
+ ```bash
31
+ npm logout
32
+ npm login
33
+ # En "Username": Deja el campo vacío y presiona Enter
34
+ # En "Password": Pega tu token
35
+ # En "Email": Tu email de NPM
36
+ ```
37
+
38
+ 3. **O configurar directamente en .npmrc:**
39
+ ```bash
40
+ npm config set //registry.npmjs.org/:_authToken YOUR_TOKEN_HERE
41
+ ```
42
+
43
+ ## Pasos Completos para Publicar
44
+
45
+ ### 1. Verificar login
46
+ ```bash
47
+ npm whoami
48
+ ```
49
+
50
+ ### 2. Verificar que el paquete esté listo
51
+ ```bash
52
+ npm run build
53
+ npm pack --dry-run
54
+ ```
55
+
56
+ ### 3. Publicar
57
+
58
+ **Con 2FA habilitado:**
59
+ ```bash
60
+ npm publish --access public --otp=123456
61
+ ```
62
+
63
+ **Con token de automatización:**
64
+ ```bash
65
+ npm publish --access public
66
+ ```
67
+
68
+ ## Alternativa: Cambiar el nombre del paquete
69
+
70
+ Si "codecrypto-cli" ya está ocupado o quieres usar un nombre único:
71
+
72
+ 1. **Edita package.json:**
73
+ ```json
74
+ {
75
+ "name": "@tu-usuario/codecrypto-cli",
76
+ ...
77
+ }
78
+ ```
79
+
80
+ 2. **Publica con scope:**
81
+ ```bash
82
+ npm publish --access public
83
+ ```
84
+
85
+ 3. **Los usuarios lo usarán así:**
86
+ ```bash
87
+ npx @tu-usuario/codecrypto-cli --help
88
+ ```
89
+
90
+ ## Verificar después de publicar
91
+
92
+ ```bash
93
+ # Ver en NPM
94
+ open https://www.npmjs.com/package/codecrypto-cli
95
+
96
+ # Probar instalación
97
+ npx codecrypto-cli@latest --help
98
+
99
+ # Ver información del paquete
100
+ npm view codecrypto-cli
101
+ ```
102
+
103
+ ## Actualizar versiones futuras
104
+
105
+ ```bash
106
+ # Incrementar versión
107
+ npm version patch # 1.0.0 -> 1.0.1
108
+ npm version minor # 1.0.0 -> 1.1.0
109
+ npm version major # 1.0.0 -> 2.0.0
110
+
111
+ # Publicar nueva versión (con 2FA)
112
+ npm publish --otp=123456
113
+ ```
114
+
115
+ ## Troubleshooting
116
+
117
+ ### Error: "You must verify your email"
118
+ ```bash
119
+ # Revisa tu correo y verifica la cuenta NPM
120
+ ```
121
+
122
+ ### Error: "Package name already exists"
123
+ ```bash
124
+ # Cambia el nombre en package.json a algo único
125
+ # O usa un scoped package: @tu-usuario/nombre
126
+ ```
127
+
128
+ ### Error: "Invalid token"
129
+ ```bash
130
+ # Logout y login de nuevo
131
+ npm logout
132
+ npm login
133
+ ```
134
+
135
+ ### Ver logs completos de errores
136
+ ```bash
137
+ cat ~/.npm/_logs/*-debug-0.log
138
+ ```
139
+
140
+ ## Recomendación
141
+
142
+ Para uso profesional, usa **Opción 1 (2FA)** por seguridad. Guarda los códigos de respaldo en un lugar seguro.
143
+
144
+ ## Comandos Rápidos
145
+
146
+ ```bash
147
+ # Setup completo
148
+ npm login # Login
149
+ npm whoami # Verificar usuario
150
+ npm run build # Compilar
151
+ npm publish --access public --otp=CODE # Publicar con 2FA
152
+
153
+ # Verificar
154
+ npx codecrypto-cli --help # Probar
155
+ npm view codecrypto-cli # Ver info
156
+ ```
package/README.md ADDED
@@ -0,0 +1,551 @@
1
+ # CodeCrypto CLI
2
+
3
+ CLI tool for CodeCrypto operations - Deploy, manage users, configure settings, and handle database operations.
4
+
5
+ ## Instalación
6
+
7
+ ### Usando NPX (sin instalación)
8
+ ```bash
9
+ npx codecrypto-cli [command]
10
+ ```
11
+
12
+ ### Instalación Global
13
+ ```bash
14
+ npm install -g codecrypto-cli
15
+ codecrypto [command]
16
+ ```
17
+
18
+ ### Instalación Local (desarrollo)
19
+ ```bash
20
+ git clone <repository>
21
+ cd cli-cc
22
+ npm install
23
+ npm run build
24
+ npm link
25
+ ```
26
+
27
+ ## Comandos Disponibles
28
+
29
+ ### 📦 Deploy
30
+
31
+ Despliega tu aplicación en diferentes entornos.
32
+
33
+ ```bash
34
+ # Despliegue básico
35
+ codecrypto deploy
36
+
37
+ # Despliegue con opciones
38
+ codecrypto deploy --env prod --branch main --region us-west-2
39
+
40
+ # Despliegue sin tests
41
+ codecrypto deploy --skip-tests
42
+
43
+ # Simulación (dry-run)
44
+ codecrypto deploy --dry-run
45
+ ```
46
+
47
+ **Opciones:**
48
+ - `-e, --env <environment>` - Entorno (dev, staging, prod). Default: `dev`
49
+ - `-b, --branch <branch>` - Rama de Git. Default: `main`
50
+ - `-r, --region <region>` - Región AWS. Default: `us-east-1`
51
+ - `--skip-tests` - Omitir tests antes del deployment
52
+ - `--dry-run` - Simular sin ejecutar
53
+
54
+ **Ejemplos:**
55
+ ```bash
56
+ # Desplegar a producción desde rama release
57
+ codecrypto deploy -e prod -b release
58
+
59
+ # Desplegar a staging sin tests
60
+ codecrypto deploy -e staging --skip-tests
61
+
62
+ # Simular despliegue a producción
63
+ codecrypto deploy -e prod --dry-run
64
+ ```
65
+
66
+ ---
67
+
68
+ ### 👤 User
69
+
70
+ Gestiona usuarios en el sistema.
71
+
72
+ #### Crear Usuario
73
+
74
+ ```bash
75
+ # Modo interactivo
76
+ codecrypto user create --interactive
77
+
78
+ # Con parámetros
79
+ codecrypto user create -u john_doe -e john@example.com -r admin
80
+
81
+ # Modo mixto (parámetros + interactivo)
82
+ codecrypto user create -u john_doe --interactive
83
+ ```
84
+
85
+ **Opciones:**
86
+ - `-u, --username <username>` - Nombre de usuario
87
+ - `-e, --email <email>` - Correo electrónico
88
+ - `-r, --role <role>` - Rol (admin, user, guest). Default: `user`
89
+ - `--interactive` - Modo interactivo
90
+
91
+ **Ejemplos:**
92
+ ```bash
93
+ # Crear admin
94
+ codecrypto user create -u admin_user -e admin@company.com -r admin
95
+
96
+ # Crear usuario guest
97
+ codecrypto user create -u guest01 -e guest@example.com -r guest
98
+ ```
99
+
100
+ #### Listar Usuarios
101
+
102
+ ```bash
103
+ # Listar todos
104
+ codecrypto user list
105
+
106
+ # Filtrar por rol
107
+ codecrypto user list -r admin
108
+
109
+ # Limitar resultados
110
+ codecrypto user list -l 5
111
+ ```
112
+
113
+ **Opciones:**
114
+ - `-r, --role <role>` - Filtrar por rol
115
+ - `-l, --limit <number>` - Límite de resultados. Default: `10`
116
+
117
+ #### Eliminar Usuario
118
+
119
+ ```bash
120
+ # Con confirmación
121
+ codecrypto user delete 123
122
+
123
+ # Sin confirmación (forzar)
124
+ codecrypto user delete 123 --force
125
+ ```
126
+
127
+ **Opciones:**
128
+ - `-f, --force` - Omitir confirmación
129
+
130
+ ---
131
+
132
+ ### ⚙️ Config
133
+
134
+ Gestiona la configuración del CLI.
135
+
136
+ #### Set (Establecer valor)
137
+
138
+ ```bash
139
+ # Configuración local
140
+ codecrypto config set api.url https://api.example.com
141
+
142
+ # Configuración global
143
+ codecrypto config set api.token my-secret-token --global
144
+ ```
145
+
146
+ **Opciones:**
147
+ - `-g, --global` - Configuración global
148
+
149
+ **Ejemplos:**
150
+ ```bash
151
+ codecrypto config set default.region us-west-2
152
+ codecrypto config set api.timeout 5000 --global
153
+ ```
154
+
155
+ #### Get (Obtener valor)
156
+
157
+ ```bash
158
+ codecrypto config get api.url
159
+ codecrypto config get default.region
160
+ ```
161
+
162
+ #### List (Listar configuración)
163
+
164
+ ```bash
165
+ # Configuración local
166
+ codecrypto config list
167
+
168
+ # Configuración global
169
+ codecrypto config list --global
170
+ ```
171
+
172
+ **Opciones:**
173
+ - `-g, --global` - Mostrar configuración global
174
+
175
+ ---
176
+
177
+ ### 💾 Database (db)
178
+
179
+ Operaciones de base de datos.
180
+
181
+ #### Migraciones
182
+
183
+ ```bash
184
+ # Ejecutar migraciones
185
+ codecrypto db migrate
186
+
187
+ # Ejecutar en producción
188
+ codecrypto db migrate -e prod
189
+
190
+ # Rollback última migración
191
+ codecrypto db migrate --rollback
192
+
193
+ # Rollback 3 migraciones
194
+ codecrypto db migrate --rollback --steps 3
195
+ ```
196
+
197
+ **Opciones:**
198
+ - `-e, --env <environment>` - Entorno. Default: `dev`
199
+ - `--rollback` - Revertir migración
200
+ - `--steps <number>` - Número de migraciones. Default: `all`
201
+
202
+ #### Seed (Poblar datos)
203
+
204
+ ```bash
205
+ # Seed básico
206
+ codecrypto db seed
207
+
208
+ # Limpiar y seed
209
+ codecrypto db seed --clear
210
+
211
+ # Seed archivo específico
212
+ codecrypto db seed -f users.sql
213
+
214
+ # Seed en staging
215
+ codecrypto db seed -e staging
216
+ ```
217
+
218
+ **Opciones:**
219
+ - `-e, --env <environment>` - Entorno. Default: `dev`
220
+ - `-f, --file <file>` - Archivo seed específico
221
+ - `--clear` - Limpiar datos existentes
222
+
223
+ #### Backup
224
+
225
+ ```bash
226
+ # Crear backup
227
+ codecrypto db backup my-backup
228
+
229
+ # Backup de producción
230
+ codecrypto db backup prod-backup -e prod
231
+
232
+ # Backup sin comprimir
233
+ codecrypto db backup test-backup --compress false
234
+
235
+ # Especificar directorio
236
+ codecrypto db backup daily-backup -o /backups/daily
237
+ ```
238
+
239
+ **Opciones:**
240
+ - `-e, --env <environment>` - Entorno origen. Default: `prod`
241
+ - `-o, --output <path>` - Directorio de salida. Default: `./backups`
242
+ - `--compress` - Comprimir archivo. Default: `true`
243
+
244
+ #### Restore
245
+
246
+ ```bash
247
+ # Restaurar en dev
248
+ codecrypto db restore backup_2024-01-15.sql.gz
249
+
250
+ # Restaurar en staging
251
+ codecrypto db restore backup.sql -e staging
252
+
253
+ # Restaurar en prod (requiere --force)
254
+ codecrypto db restore backup.sql -e prod --force
255
+ ```
256
+
257
+ **Opciones:**
258
+ - `-e, --env <environment>` - Entorno destino. Default: `dev`
259
+ - `--force` - Omitir confirmación (requerido para prod)
260
+
261
+ ---
262
+
263
+ ## Ayuda
264
+
265
+ ```bash
266
+ # Ayuda general
267
+ codecrypto --help
268
+
269
+ # Ayuda de comando específico
270
+ codecrypto deploy --help
271
+ codecrypto user --help
272
+ codecrypto user create --help
273
+ codecrypto db --help
274
+ codecrypto db migrate --help
275
+ ```
276
+
277
+ ## Ejemplos de Uso Completo
278
+
279
+ ### Workflow de Deployment
280
+ ```bash
281
+ # 1. Configurar ambiente
282
+ codecrypto config set api.url https://api.myapp.com
283
+ codecrypto config set default.region us-east-1
284
+
285
+ # 2. Ejecutar migraciones
286
+ codecrypto db migrate -e staging
287
+
288
+ # 3. Deploy a staging
289
+ codecrypto deploy -e staging -b develop
290
+
291
+ # 4. Si todo OK, deploy a producción
292
+ codecrypto deploy -e prod -b main
293
+ ```
294
+
295
+ ### Setup Inicial de DB
296
+ ```bash
297
+ # 1. Crear backup de seguridad
298
+ codecrypto db backup safety-backup -e prod
299
+
300
+ # 2. Ejecutar migraciones
301
+ codecrypto db migrate -e dev
302
+
303
+ # 3. Poblar datos de prueba
304
+ codecrypto db seed --clear
305
+ ```
306
+
307
+ ### Gestión de Usuarios
308
+ ```bash
309
+ # Crear varios usuarios
310
+ codecrypto user create -u admin -e admin@co.com -r admin
311
+ codecrypto user create -u user1 -e user1@co.com -r user
312
+ codecrypto user create -u guest1 -e guest1@co.com -r guest
313
+
314
+ # Listar usuarios admin
315
+ codecrypto user list -r admin
316
+
317
+ # Eliminar usuario
318
+ codecrypto user delete 5 --force
319
+ ```
320
+
321
+ ## Desarrollo
322
+
323
+ ### Estructura del Proyecto
324
+ ```
325
+ cli-cc/
326
+ ├── src/
327
+ │ ├── index.ts # Punto de entrada
328
+ │ └── commands/
329
+ │ ├── deploy.ts # Comando deploy
330
+ │ ├── user.ts # Comando user
331
+ │ ├── config.ts # Comando config
332
+ │ └── database.ts # Comando db
333
+ ├── dist/ # Build output
334
+ ├── package.json
335
+ ├── tsconfig.json
336
+ └── README.md
337
+ ```
338
+
339
+ ### Scripts de Desarrollo
340
+
341
+ ```bash
342
+ # Instalar dependencias
343
+ npm install
344
+
345
+ # Desarrollo (ejecutar sin compilar)
346
+ npm run dev -- deploy --help
347
+
348
+ # Compilar
349
+ npm run build
350
+
351
+ # Probar compilado
352
+ npm run test
353
+
354
+ # Testear localmente con npm link
355
+ npm link
356
+ codecrypto --help
357
+ ```
358
+
359
+ ### Compilar y Probar
360
+
361
+ ```bash
362
+ # Build
363
+ npm run build
364
+
365
+ # Probar comando compilado
366
+ node dist/index.js --help
367
+ node dist/index.js deploy --dry-run
368
+ node dist/index.js user create --interactive
369
+ ```
370
+
371
+ ## Publicación a NPM
372
+
373
+ ### 1. Preparación
374
+
375
+ Asegúrate de tener una cuenta en [npmjs.com](https://www.npmjs.com/) y estar logueado:
376
+
377
+ ```bash
378
+ npm login
379
+ ```
380
+
381
+ ### 2. Actualizar package.json
382
+
383
+ Verifica que tu `package.json` tenga:
384
+ - `name`: Nombre único en NPM (verifica disponibilidad en npmjs.com)
385
+ - `version`: Versión semántica (ej: 1.0.0)
386
+ - `description`: Descripción clara
387
+ - `keywords`: Para búsquedas
388
+ - `author`: Tu información
389
+ - `license`: Tipo de licencia
390
+ - `bin`: Configurado correctamente
391
+ - `files`: Archivos a incluir (opcional)
392
+
393
+ ```json
394
+ {
395
+ "name": "codecrypto-cli",
396
+ "version": "1.0.0",
397
+ "files": ["dist", "README.md"],
398
+ ...
399
+ }
400
+ ```
401
+
402
+ ### 3. Verificar el nombre
403
+
404
+ ```bash
405
+ # Verificar si el nombre está disponible
406
+ npm search codecrypto-cli
407
+ ```
408
+
409
+ Si está ocupado, cambia el nombre en `package.json`:
410
+ ```json
411
+ {
412
+ "name": "@tu-usuario/codecrypto-cli"
413
+ }
414
+ ```
415
+
416
+ ### 4. Build Final
417
+
418
+ ```bash
419
+ npm run build
420
+ ```
421
+
422
+ ### 5. Probar el paquete localmente
423
+
424
+ ```bash
425
+ # Simular publicación (ver qué archivos se incluirán)
426
+ npm pack
427
+
428
+ # Esto crea un archivo .tgz que puedes inspeccionar
429
+ # Descomprímelo y verifica el contenido
430
+ ```
431
+
432
+ ### 6. Publicar
433
+
434
+ ```bash
435
+ # Publicación pública
436
+ npm publish
437
+
438
+ # Si usas scoped package (@usuario/nombre)
439
+ npm publish --access public
440
+ ```
441
+
442
+ ### 7. Verificar
443
+
444
+ ```bash
445
+ # Probar instalación
446
+ npx codecrypto-cli@latest --help
447
+
448
+ # O con el nombre real de tu paquete
449
+ npx tu-paquete --help
450
+ ```
451
+
452
+ ### 8. Actualizar Versiones
453
+
454
+ Cuando hagas cambios:
455
+
456
+ ```bash
457
+ # Patch (1.0.0 -> 1.0.1) - bug fixes
458
+ npm version patch
459
+
460
+ # Minor (1.0.0 -> 1.1.0) - nuevas features
461
+ npm version minor
462
+
463
+ # Major (1.0.0 -> 2.0.0) - breaking changes
464
+ npm version major
465
+
466
+ # Publicar nueva versión
467
+ npm publish
468
+ ```
469
+
470
+ ### Workflow Completo de Publicación
471
+
472
+ ```bash
473
+ # 1. Asegurarte que todo funciona
474
+ npm run build
475
+ npm run test
476
+
477
+ # 2. Login a NPM
478
+ npm login
479
+
480
+ # 3. Verificar nombre disponible
481
+ npm search codecrypto-cli
482
+
483
+ # 4. Publicar
484
+ npm publish --access public
485
+
486
+ # 5. Verificar
487
+ npx codecrypto-cli --help
488
+
489
+ # 6. Para actualizaciones futuras
490
+ npm version patch
491
+ npm publish
492
+ ```
493
+
494
+ ### Despublicar (si es necesario)
495
+
496
+ ```bash
497
+ # Solo dentro de las primeras 72 horas
498
+ npm unpublish codecrypto-cli@1.0.0
499
+
500
+ # Despublicar todas las versiones (usar con cuidado)
501
+ npm unpublish codecrypto-cli --force
502
+ ```
503
+
504
+ ## Mejores Prácticas
505
+
506
+ 1. **Versionado Semántico**: Usa [semver](https://semver.org/)
507
+ - MAJOR: Cambios incompatibles
508
+ - MINOR: Nuevas funcionalidades compatibles
509
+ - PATCH: Bug fixes
510
+
511
+ 2. **README**: Mantén documentación actualizada
512
+
513
+ 3. **CHANGELOG**: Documenta cambios en cada versión
514
+
515
+ 4. **Testing**: Prueba antes de publicar
516
+
517
+ 5. **Git Tags**: Crea tags para cada versión
518
+ ```bash
519
+ git tag v1.0.0
520
+ git push --tags
521
+ ```
522
+
523
+ ## Troubleshooting
524
+
525
+ ### Error: "command not found"
526
+ - Verifica que `bin` en package.json apunte a `dist/index.js`
527
+ - El archivo debe tener shebang: `#!/usr/bin/env node`
528
+ - Asegúrate de compilar: `npm run build`
529
+
530
+ ### Error: "permission denied"
531
+ ```bash
532
+ # Linux/Mac
533
+ chmod +x dist/index.js
534
+ ```
535
+
536
+ ### Error al publicar
537
+ - Verifica que estés logueado: `npm whoami`
538
+ - El nombre no existe: Cambia el nombre en package.json
539
+ - Necesitas acceso: Usa `--access public` para scoped packages
540
+
541
+ ## Recursos
542
+
543
+ - [Commander.js](https://github.com/tj/commander.js) - Framework CLI
544
+ - [Chalk](https://github.com/chalk/chalk) - Colores en terminal
545
+ - [Inquirer](https://github.com/SBoudrias/Inquirer.js) - Prompts interactivos
546
+ - [Ora](https://github.com/sindresorhus/ora) - Spinners
547
+ - [NPM Publishing Guide](https://docs.npmjs.com/cli/v10/commands/npm-publish)
548
+
549
+ ## Licencia
550
+
551
+ MIT
Binary file
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const configCommand: Command;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,aAAa,SACgB,CAAC"}