Skip to content

Commit 639dfab

Browse files
committed
Merge feature/export-import: add export/import commands (v1.6.4)
2 parents 65dc2e4 + 74f985b commit 639dfab

16 files changed

Lines changed: 1190 additions & 20 deletions

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ pm run order-service
185185
- 🔤 **Shell autocompletion** - TAB completion for bash, zsh, fish, and PowerShell with `pm completions`
186186
- 🔐 **Security scan** - Detect misconfigurations (Dockerfile root, exposed secrets, insecure URLs) with `pm secure`, auto-fix with `--fix`
187187
- 🔍 **Dependency audit** - Scan dependencies for known vulnerabilities with `pm audit` using native tools (npm audit, cargo audit, govulncheck, pip-audit, dotnet)
188+
- 📤 **Export & Import** - Migrate setups between machines with `pm export` and `pm import`, supports selective export and path validation
188189
- 🌐 **Multi-platform** - Works on Windows, Linux, and Mac
189190

190191
---
@@ -251,6 +252,9 @@ chmod +x scripts/install.sh && ./scripts/install.sh
251252
| `pm secure` | Scan projects for security misconfigurations |
252253
| `pm secure --fix` | Auto-fix .gitignore issues (add .env, *.pem, *.key entries) |
253254
| `pm audit` | Audit dependencies for known vulnerabilities |
255+
| `pm export` | Export all projects to a portable JSON file |
256+
| `pm export <names...> [--file <path>]` | Export selected projects to a custom file |
257+
| `pm import <file>` | Import projects from an exported JSON file |
254258
| `pm help` | Show help |
255259
| `pm version` | Show version |
256260

@@ -462,9 +466,10 @@ Projects are saved in:
462466
- **Integrations** — Git status, interactive TTY, multi-platform installers, GitHub Actions
463467
- **Security**`pm secure` scans for misconfigurations, `--fix` auto-remediates .gitignore issues
464468
- **Audit**`pm audit` checks dependencies for known vulnerabilities using native ecosystem tools
465-
- **Reliability** — Atomic writes, backup/recovery, directory validation, download integrity, 554 tests
469+
- **Portability**`pm export` / `pm import` for migrating setups between machines or sharing team configs
470+
- **Reliability** — Atomic writes, backup/recovery, directory validation, download integrity, 582 tests
466471

467-
> Latest release: **v1.6.3** (Dependency Audit) — Full version history in [ROADMAP.md](ROADMAP.md)
472+
> Latest release: **v1.6.4** (Export & Import) — Full version history in [ROADMAP.md](ROADMAP.md)
468473
469474
### 💡 Future Ideas
470475
- [ ] `pm run-all` / `pm build-all` - Execute commands across all projects

ROADMAP.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,22 @@ Run custom scripts automatically before or after any command. Hooks are per-proj
243243
244244
---
245245

246-
## v1.6.4 — Export & Import
246+
## v1.6.4 — Export & Import
247247

248248
### `pm export` / `pm import` commands
249-
- `pm export` — export all registered projects to a portable JSON file
250-
- `pm import <file>` — import projects from an exported file
251-
- Useful for migrating between machines or sharing team setups
252-
- Validates paths on import and warns about missing directories
249+
Export all or selected projects to a portable JSON file and import them back on another machine.
250+
251+
| Feature | Status |
252+
|---------|--------|
253+
| `pm export` — export all registered projects to JSON | ✅ Done |
254+
| `pm export name1 name2` — export specific projects | ✅ Done |
255+
| `pm export --file <path>` — custom output file (default: `pm-export.json`) | ✅ Done |
256+
| `pm import <file>` — import projects from an exported file | ✅ Done |
257+
| Self-describing JSON format with version metadata | ✅ Done |
258+
| Skip existing projects on import (never overwrite) | ✅ Done |
259+
| Warn about missing paths on import with `pm rename` hint | ✅ Done |
260+
| Invalid type defaults to UNKNOWN with warning | ✅ Done |
261+
| Shell autocompletion for export/import commands | ✅ Done |
253262

254263
---
255264

User-Guide.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- [Diagnostics](#-diagnostics)
1919
- [Security Scan](#-security-scan)
2020
- [Dependency Audit](#-dependency-audit)
21+
- [Export & Import](#-export--import)
2122
- [Help and Version](#-help-and-version)
2223
- [Environment Variables](#-environment-variables)
2324
- [What Are They?](#what-are-they)
@@ -769,6 +770,52 @@ Runs native ecosystem vulnerability tools on each registered project and display
769770

770771
---
771772

773+
### 🔹 Export & Import
774+
775+
Export your project configurations to a portable JSON file and import them on another machine.
776+
777+
#### Export all projects
778+
```bash
779+
pm export
780+
```
781+
782+
Saves all registered projects to `pm-export.json` in the current directory.
783+
784+
#### Export selected projects
785+
```bash
786+
pm export backend-api web-server
787+
```
788+
789+
#### Export to a custom file
790+
```bash
791+
pm export --file ~/backup/my-setup.json
792+
pm export backend-api --file team-config.json
793+
```
794+
795+
#### Import projects
796+
```bash
797+
pm import pm-export.json
798+
pm import ~/backup/my-setup.json
799+
```
800+
801+
**Behavior on import:**
802+
- Projects that already exist are **skipped** (never overwritten)
803+
- Projects with paths that don't exist on disk are imported with a **warning** — fix later with `pm rename <name> --path <new-path>`
804+
- Invalid project types default to `UNKNOWN`
805+
806+
**Example output:**
807+
```
808+
Import
809+
──────
810+
811+
✓ Imported 3 projects
812+
⚠ Skipped 'backend' — already exists
813+
⚠ 'api-server' path does not exist: /old/machine/path
814+
Update with: pm rename api-server --path <new-path>
815+
```
816+
817+
---
818+
772819
### 🔹 Help and Version
773820

774821
#### View help
@@ -1723,6 +1770,12 @@ pm secure --fix # Auto-fix .gitignore issues
17231770
# === AUDIT ===
17241771
pm audit # Audit dependencies for known vulnerabilities
17251772

1773+
# === EXPORT & IMPORT ===
1774+
pm export # Export all projects to pm-export.json
1775+
pm export backend web-server # Export selected projects
1776+
pm export --file backup.json # Export to custom file
1777+
pm import pm-export.json # Import projects from file
1778+
17261779
# === UPDATES ===
17271780
pm update # Update to latest version
17281781

docs/es/README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ pm run servicio-pedidos
185185
- 🔤 **Autocompletado en shell** - Completado con TAB para bash, zsh, fish y PowerShell con `pm completions`
186186
- 🔐 **Escaneo de seguridad** - Detecta misconfiguraciones (Dockerfile root, secretos expuestos, URLs inseguras) con `pm secure`, auto-corrige con `--fix`
187187
- 🔍 **Auditoría de dependencias** - Escanea dependencias en busca de vulnerabilidades conocidas con `pm audit` usando herramientas nativas (npm audit, cargo audit, govulncheck, pip-audit, dotnet)
188+
- 📤 **Exportar e Importar** - Migra configuraciones entre máquinas con `pm export` y `pm import`, soporta exportación selectiva y validación de rutas
188189
- 🌐 **Multi-plataforma** - Funciona en Windows, Linux y Mac
189190

190191
---
@@ -251,6 +252,9 @@ chmod +x scripts/install.sh && ./scripts/install.sh
251252
| `pm secure` | Escanear proyectos buscando misconfiguraciones de seguridad |
252253
| `pm secure --fix` | Auto-corregir problemas de .gitignore (añadir .env, *.pem, *.key) |
253254
| `pm audit` | Auditar dependencias en busca de vulnerabilidades conocidas |
255+
| `pm export` | Exportar todos los proyectos a un archivo JSON portátil |
256+
| `pm export <nombres...> [--file <ruta>]` | Exportar proyectos seleccionados a un archivo personalizado |
257+
| `pm import <archivo>` | Importar proyectos desde un archivo JSON exportado |
254258
| `pm help` | Mostrar ayuda |
255259
| `pm version` | Mostrar versión |
256260

@@ -462,9 +466,10 @@ Los proyectos se guardan en:
462466
- **Integraciones** — Estado Git, TTY interactivo, instaladores multi-plataforma, GitHub Actions
463467
- **Seguridad**`pm secure` escanea misconfiguraciones, `--fix` auto-corrige problemas de .gitignore
464468
- **Auditoría**`pm audit` verifica dependencias en busca de vulnerabilidades usando herramientas nativas del ecosistema
465-
- **Fiabilidad** — Escritura atómica, backup/recuperación, validación de directorio, integridad de descarga, 554 tests
469+
- **Portabilidad**`pm export` / `pm import` para migrar configuraciones entre máquinas o compartir setups de equipo
470+
- **Fiabilidad** — Escritura atómica, backup/recuperación, validación de directorio, integridad de descarga, 582 tests
466471

467-
> Última release: **v1.6.3** (Auditoría de Dependencias) — Historial completo en [ROADMAP.md](ROADMAP.md)
472+
> Última release: **v1.6.4** (Exportar e Importar) — Historial completo en [ROADMAP.md](ROADMAP.md)
468473
469474
### 💡 Ideas Futuras
470475
- [ ] `pm run-all` / `pm build-all` - Ejecutar comandos en todos los proyectos

docs/es/ROADMAP.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,22 @@ Ejecuta scripts personalizados automáticamente antes o después de cualquier co
243243
244244
---
245245

246-
## v1.6.4 — Exportar e Importar
246+
## v1.6.4 — Exportar e Importar
247247

248248
### Comandos `pm export` / `pm import`
249-
- `pm export` — exportar todos los proyectos registrados a un archivo JSON portable
250-
- `pm import <archivo>` — importar proyectos desde un archivo exportado
251-
- Útil para migrar entre máquinas o compartir configuraciones de equipo
252-
- Valida rutas al importar y avisa sobre directorios faltantes
249+
Exporta todos o proyectos seleccionados a un archivo JSON portable e impórtalos en otra máquina.
250+
251+
| Característica | Estado |
252+
|----------------|--------|
253+
| `pm export` — exportar todos los proyectos registrados a JSON | ✅ Hecho |
254+
| `pm export nombre1 nombre2` — exportar proyectos específicos | ✅ Hecho |
255+
| `pm export --file <ruta>` — archivo de salida personalizado (por defecto: `pm-export.json`) | ✅ Hecho |
256+
| `pm import <archivo>` — importar proyectos desde un archivo exportado | ✅ Hecho |
257+
| Formato JSON auto-descriptivo con metadatos de versión | ✅ Hecho |
258+
| Omitir proyectos existentes al importar (nunca sobrescribe) | ✅ Hecho |
259+
| Avisar sobre rutas faltantes al importar con sugerencia `pm rename` | ✅ Hecho |
260+
| Tipo inválido por defecto a UNKNOWN con aviso | ✅ Hecho |
261+
| Autocompletado en shell para comandos export/import | ✅ Hecho |
253262

254263
---
255264

docs/es/User-Guide.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- [Diagnósticos](#-diagnósticos)
1919
- [Escaneo de Seguridad](#-escaneo-de-seguridad)
2020
- [Auditoría de Dependencias](#-auditoría-de-dependencias)
21+
- [Exportar e Importar](#-exportar-e-importar)
2122
- [Ayuda y Versión](#-ayuda-y-versión)
2223
- [Variables de Entorno](#-variables-de-entorno)
2324
- [¿Qué Son?](#qué-son)
@@ -769,6 +770,52 @@ Ejecuta herramientas nativas de auditoría de vulnerabilidades en cada proyecto
769770

770771
---
771772

773+
### 🔹 Exportar e Importar
774+
775+
Exporta las configuraciones de tus proyectos a un archivo JSON portable e impórtalos en otra máquina.
776+
777+
#### Exportar todos los proyectos
778+
```bash
779+
pm export
780+
```
781+
782+
Guarda todos los proyectos registrados en `pm-export.json` en el directorio actual.
783+
784+
#### Exportar proyectos seleccionados
785+
```bash
786+
pm export backend-api web-server
787+
```
788+
789+
#### Exportar a un archivo personalizado
790+
```bash
791+
pm export --file ~/backup/mi-setup.json
792+
pm export backend-api --file config-equipo.json
793+
```
794+
795+
#### Importar proyectos
796+
```bash
797+
pm import pm-export.json
798+
pm import ~/backup/mi-setup.json
799+
```
800+
801+
**Comportamiento al importar:**
802+
- Los proyectos que ya existen se **omiten** (nunca se sobreescriben)
803+
- Los proyectos cuyas rutas no existen en disco se importan con un **aviso** — corrige luego con `pm rename <nombre> --path <nueva-ruta>`
804+
- Los tipos de proyecto inválidos se establecen como `UNKNOWN`
805+
806+
**Ejemplo de salida:**
807+
```
808+
Import
809+
──────
810+
811+
✓ Imported 3 projects
812+
⚠ Skipped 'backend' — already exists
813+
⚠ 'api-server' path does not exist: /old/machine/path
814+
Update with: pm rename api-server --path <new-path>
815+
```
816+
817+
---
818+
772819
### 🔹 Ayuda y Versión
773820

774821
#### Ver ayuda
@@ -1723,6 +1770,12 @@ pm secure --fix # Auto-corregir problemas de
17231770
# === AUDITORÍA ===
17241771
pm audit # Auditar dependencias en busca de vulnerabilidades
17251772

1773+
# === EXPORTAR E IMPORTAR ===
1774+
pm export # Exportar todos los proyectos a pm-export.json
1775+
pm export backend web-server # Exportar proyectos seleccionados
1776+
pm export --file backup.json # Exportar a archivo personalizado
1777+
pm import pm-export.json # Importar proyectos desde archivo
1778+
17261779
# === ACTUALIZACIONES ===
17271780
pm update # Actualizar a última versión
17281781

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<!-- Identificación del proyecto -->
99
<groupId>pm</groupId>
1010
<artifactId>projectmanager</artifactId>
11-
<version>1.6.3</version>
11+
<version>1.6.4</version>
1212
<packaging>jar</packaging>
1313

1414
<name>ProjectManager</name>

scripts/install.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ProjectManager - Installation Script for Windows
22
# Works both from source (mvn clean package) and from GitHub Release download
33

4-
$jarName = "projectmanager-1.6.3.jar"
4+
$jarName = "projectmanager-1.6.4.jar"
55

66
Write-Host "=== ProjectManager Installer ===" -ForegroundColor Cyan
77
Write-Host ""

scripts/install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# ProjectManager - Installation Script for Linux/Mac
33
# Works both from source (mvn clean package) and from GitHub Release download
44

5-
JAR_NAME="projectmanager-1.6.3.jar"
5+
JAR_NAME="projectmanager-1.6.4.jar"
66

77
echo "=== ProjectManager Installer ==="
88
echo ""

0 commit comments

Comments
 (0)