Skip to content

Commit cf75eb7

Browse files
committed
Merge branch 'feature/workspaces' — v1.7.0 Multi-project Workspaces
2 parents f0b0821 + 94ceaff commit cf75eb7

21 files changed

Lines changed: 1487 additions & 97 deletions

README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ pm run order-service
188188
- 📤 **Export & Import** - Migrate setups between machines with `pm export` and `pm import`, supports selective export and path validation
189189
- 🔄 **CI/CD detection** - Detect GitHub Actions, GitLab CI, Jenkins, Travis CI, CircleCI with `pm ci` and in `pm info`
190190
- 🧹 **Linting & Formatting** - Run linters with `pm lint` and formatters with `pm fmt`, auto-detects ESLint, Clippy, Prettier, gofmt, Ruff, and more
191+
- 📦 **Multi-project Workspaces** - Detect monorepo modules with `pm modules`, multi-language detection, `pm build --all` and `pm test --all`
191192
- 🌐 **Multi-platform** - Works on Windows, Linux, and Mac
192193

193194
---
@@ -257,6 +258,9 @@ chmod +x scripts/install.sh && ./scripts/install.sh
257258
| `pm ci [name]` | Show CI/CD pipelines and dashboard URLs |
258259
| `pm lint [name]` | Run linters on project(s) |
259260
| `pm fmt [name]` | Run formatters on project(s) |
261+
| `pm modules [name]` | Show workspace modules |
262+
| `pm build --all` | Build all registered projects |
263+
| `pm test --all` | Test all registered projects |
260264
| `pm export` | Export all projects to a portable JSON file |
261265
| `pm export <names...> [--file <path>]` | Export selected projects to a custom file |
262266
| `pm import <file>` | Import projects from an exported JSON file |
@@ -432,6 +436,7 @@ ProjectManager/
432436
│ ├── detector/ # Type detection
433437
│ ├── executor/ # Command execution
434438
│ ├── storage/ # JSON persistence
439+
│ ├── workspace/ # Workspace/monorepo detection
435440
│ └── util/ # Utilities (Git, Adapters)
436441
├── scripts/
437442
│ ├── install.ps1 # Windows installer
@@ -474,14 +479,13 @@ Projects are saved in:
474479
- **Portability**`pm export` / `pm import` for migrating setups between machines or sharing team configs
475480
- **CI/CD**`pm ci` detects pipelines (GitHub Actions, GitLab CI, Jenkins, Travis, CircleCI) and shows dashboard URLs
476481
- **Lint & Format**`pm lint` / `pm fmt` auto-detect and run linters/formatters (ESLint, Prettier, Clippy, gofmt, Ruff, Black, Checkstyle, Spotless, and more)
477-
- **Reliability** — Atomic writes, backup/recovery, directory validation, download integrity, 658 tests
482+
- **Workspaces**`pm modules` detects monorepo structures (Cargo, npm/pnpm/yarn, Gradle, Go), multi-language detection, `pm build --all` / `pm test --all`
483+
- **Reliability** — Atomic writes, backup/recovery, directory validation, download integrity, 697 tests
478484

479-
> Latest release: **v1.6.6** (Linting & Formatting) — Full version history in [ROADMAP.md](ROADMAP.md)
485+
> Latest release: **v1.7.0** (Multi-project Workspaces) — Full version history in [ROADMAP.md](ROADMAP.md)
480486
481487
### 💡 Future Ideas
482-
- [ ] `pm run-all` / `pm build-all` - Execute commands across all projects
483488
- [ ] Project groups (`pm group create backend api-users product-service`, `pm run-group backend`)
484-
- [ ] Shell autocompletion (bash/zsh/PowerShell tab completion)
485489
- [ ] Multi-ecosystem installers (npm, Cargo, Homebrew, Scoop, etc.)
486490

487491
> See [ROADMAP.md](ROADMAP.md) for the full roadmap with detailed plans.

ROADMAP.md

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -298,38 +298,25 @@ Export all or selected projects to a portable JSON file and import them back on
298298

299299
---
300300

301-
## v1.6.7Code Generation & Team Workflows
301+
## v1.7.0Multi-project Workspaces ✅
302302

303-
### Code generation detection
304-
- Detect build_runner (Flutter/Dart), protobuf, OpenAPI generators
305-
- `pm codegen` — run detected code generation tools
306-
- Warn if generated files are outdated
303+
### Monorepo & multi-language detection
307304

308-
### Team workflow support
309-
- Detect number of contributors from git log
310-
- `pm team` — show active contributors and their recent areas
311-
- Branch naming convention detection and validation
312-
- PR template detection
313-
314-
---
315-
316-
## v1.7.0 — Multi-project Workspaces
317-
318-
### Monorepo support
319-
- Detect monorepo structures:
320-
- Cargo workspaces (`[workspace]` in Cargo.toml)
321-
- npm/pnpm/yarn workspaces
322-
- Go multi-module repos
323-
- Gradle multi-project builds
324-
- `pm list-modules` — show all sub-projects
325-
- `pm build --all` — build all modules
326-
- `pm test --all` — test all modules
327-
- `pm run <module>` — run specific module
328-
329-
### Multi-language project detection
330-
- Detect projects that use multiple languages (e.g., Rust backend + Flutter frontend)
331-
- Show all detected types: `pm info` → "Types: RUST, FLUTTER, DOCKER"
332-
- Run commands per component: `pm build backend`, `pm test mobile`
305+
| Feature | Status |
306+
|---------|--------|
307+
| Multi-language detection: `detectAll()` finds all project types in a directory | ✅ Done |
308+
| Secondary types shown in `pm info` ("Also detected: Docker, Node.js") | ✅ Done |
309+
| Secondary types persisted in `projects.json` (backward compatible) | ✅ Done |
310+
| `pm build --all` — build all registered projects with summary | ✅ Done |
311+
| `pm test --all` — test all registered projects with summary | ✅ Done |
312+
| Continue-on-failure: `--all` runs every project, shows pass/fail summary | ✅ Done |
313+
| Cargo workspace detection (`[workspace]` members in Cargo.toml) | ✅ Done |
314+
| npm/pnpm/yarn workspace detection (array, object, glob patterns) | ✅ Done |
315+
| Gradle multi-project detection (`include()` in settings.gradle/kts) | ✅ Done |
316+
| Go multi-module detection (nested `go.mod` files) | ✅ Done |
317+
| `pm modules [name]` — show workspace modules for project(s) | ✅ Done |
318+
| Workspace module count shown in `pm info` | ✅ Done |
319+
| Shell autocompletion for `modules`, `build --all`, `test --all` | ✅ Done |
333320

334321
---
335322

User-Guide.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
- [Export & Import](#-export--import)
2222
- [CI/CD Detection](#-cicd-detection)
2323
- [Linting & Formatting](#-linting--formatting)
24+
- [Multi-project Workspaces](#-multi-project-workspaces)
2425
- [Help and Version](#-help-and-version)
2526
- [Environment Variables](#-environment-variables)
2627
- [What Are They?](#what-are-they)
@@ -932,6 +933,80 @@ Lint — backend
932933

933934
---
934935

936+
### 🔹 Multi-project Workspaces
937+
938+
Detect monorepo modules and manage multi-language projects.
939+
940+
#### Show workspace modules for a project
941+
```bash
942+
pm modules backend
943+
```
944+
945+
#### Show workspace modules for all projects
946+
```bash
947+
pm modules
948+
```
949+
950+
**Supported workspace types:**
951+
952+
| Project Type | Detection | Module Source |
953+
|---|---|---|
954+
| Rust | `[workspace]` in `Cargo.toml` | `members` list |
955+
| Node.js/pnpm/Yarn | `"workspaces"` in `package.json` | Array or object format, glob expansion |
956+
| Gradle | `include()` in `settings.gradle` / `settings.gradle.kts` | Include directives |
957+
| Go | Nested `go.mod` files | Subdirectories with `go.mod` (depth 3) |
958+
959+
**Example output:**
960+
```
961+
Workspace Modules — backend (Rust)
962+
963+
Name Path Type
964+
─────────────────────────────────────
965+
app app/ Rust
966+
lib-core lib/core/ Rust
967+
tools tools/ Rust
968+
969+
3 modules detected
970+
```
971+
972+
#### Multi-language detection
973+
974+
When a project contains multiple technologies (e.g., `pom.xml` + `docker-compose.yml`), ProjectManager now detects all of them:
975+
976+
```
977+
my-api (Maven)
978+
Also detected: Docker
979+
```
980+
981+
Secondary types are shown in `pm info` and persisted in `projects.json`. Use `pm refresh` to re-detect secondary types for existing projects.
982+
983+
#### Build all projects
984+
```bash
985+
pm build --all
986+
```
987+
988+
Builds every registered project. Projects without a `build` command are skipped. Shows a pass/fail summary at the end.
989+
990+
#### Test all projects
991+
```bash
992+
pm test --all
993+
```
994+
995+
Tests every registered project. Continues on failure and shows a summary.
996+
997+
**Example output:**
998+
```
999+
=== Build All ===
1000+
1001+
✓ backend (Maven) — 12s
1002+
✓ frontend (Node.js) — 8s
1003+
✗ legacy-api (Gradle) — exit code 1
1004+
1005+
Result: 2/3 projects built successfully
1006+
```
1007+
1008+
---
1009+
9351010
### 🔹 Help and Version
9361011

9371012
#### View help
@@ -1902,6 +1977,12 @@ pm lint <name> # Run linters on a specific proje
19021977
pm fmt # Run formatters on all projects
19031978
pm fmt <name> # Run formatters on a specific project
19041979

1980+
# === WORKSPACES ===
1981+
pm modules # Show workspace modules for all projects
1982+
pm modules <name> # Show workspace modules for a project
1983+
pm build --all # Build all registered projects
1984+
pm test --all # Test all registered projects
1985+
19051986
# === UPDATES ===
19061987
pm update # Update to latest version
19071988

dependency-reduced-pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>pm</groupId>
55
<artifactId>projectmanager</artifactId>
66
<name>ProjectManager</name>
7-
<version>1.5.0</version>
7+
<version>1.6.6</version>
88
<description>CLI tool to manage multiple projects - Scan commands, build, run, monitor</description>
99
<licenses>
1010
<license>

docs/es/README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ pm run servicio-pedidos
188188
- 📤 **Exportar e Importar** - Migra configuraciones entre máquinas con `pm export` y `pm import`, soporta exportación selectiva y validación de rutas
189189
- 🔄 **Detección CI/CD** - Detecta GitHub Actions, GitLab CI, Jenkins, Travis CI, CircleCI con `pm ci` y en `pm info`
190190
- 🧹 **Linting y Formateo** - Ejecuta linters con `pm lint` y formateadores con `pm fmt`, auto-detecta ESLint, Clippy, Prettier, gofmt, Ruff y más
191+
- 📦 **Espacios de Trabajo Multi-proyecto** - Detecta módulos monorepo con `pm modules`, detección multi-lenguaje, `pm build --all` y `pm test --all`
191192
- 🌐 **Multi-plataforma** - Funciona en Windows, Linux y Mac
192193

193194
---
@@ -257,6 +258,9 @@ chmod +x scripts/install.sh && ./scripts/install.sh
257258
| `pm ci [nombre]` | Mostrar pipelines CI/CD y URLs de dashboard |
258259
| `pm lint [nombre]` | Ejecutar linters en proyecto(s) |
259260
| `pm fmt [nombre]` | Ejecutar formateadores en proyecto(s) |
261+
| `pm modules [nombre]` | Mostrar módulos del workspace |
262+
| `pm build --all` | Compilar todos los proyectos registrados |
263+
| `pm test --all` | Testear todos los proyectos registrados |
260264
| `pm export` | Exportar todos los proyectos a un archivo JSON portátil |
261265
| `pm export <nombres...> [--file <ruta>]` | Exportar proyectos seleccionados a un archivo personalizado |
262266
| `pm import <archivo>` | Importar proyectos desde un archivo JSON exportado |
@@ -432,6 +436,7 @@ ProjectManager/
432436
│ ├── detector/ # Detección de tipo
433437
│ ├── executor/ # Ejecución de comandos
434438
│ ├── storage/ # Persistencia JSON
439+
│ ├── workspace/ # Detección de workspaces/monorepos
435440
│ └── util/ # Utilidades (Git, Adapters)
436441
├── scripts/
437442
│ ├── install.ps1 # Instalador Windows
@@ -474,14 +479,13 @@ Los proyectos se guardan en:
474479
- **Portabilidad**`pm export` / `pm import` para migrar configuraciones entre máquinas o compartir setups de equipo
475480
- **CI/CD**`pm ci` detecta GitHub Actions, GitLab CI, Jenkins, Travis CI, CircleCI y muestra URLs de dashboard
476481
- **Lint y Formato**`pm lint` / `pm fmt` auto-detectan y ejecutan linters/formateadores (ESLint, Prettier, Clippy, gofmt, Ruff, Black, Checkstyle, Spotless y más)
477-
- **Fiabilidad** — Escritura atómica, backup/recuperación, validación de directorio, integridad de descarga, 658 tests
482+
- **Workspaces**`pm modules` detecta monorepos (Cargo, npm, Gradle, Go), detección multi-lenguaje, `pm build --all` y `pm test --all`
483+
- **Fiabilidad** — Escritura atómica, backup/recuperación, validación de directorio, integridad de descarga, 697 tests
478484

479-
> Última release: **v1.6.6** (Linting y Formateo) — Historial completo en [ROADMAP.md](ROADMAP.md)
485+
> Última release: **v1.7.0** (Espacios de Trabajo Multi-proyecto) — Historial completo en [ROADMAP.md](ROADMAP.md)
480486
481487
### 💡 Ideas Futuras
482-
- [ ] `pm run-all` / `pm build-all` - Ejecutar comandos en todos los proyectos
483488
- [ ] Grupos de proyectos (`pm group create backend api-users product-service`, `pm run-group backend`)
484-
- [ ] Autocompletado de shell (tab completion para bash/zsh/PowerShell)
485489
- [ ] Instaladores multi-ecosistema (npm, Cargo, Homebrew, Scoop, etc.)
486490

487491
> Ver [ROADMAP.md](ROADMAP.md) para el roadmap completo con planes detallados.

docs/es/ROADMAP.md

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -298,38 +298,25 @@ Exporta todos o proyectos seleccionados a un archivo JSON portable e impórtalos
298298

299299
---
300300

301-
## v1.6.7Generación de Código y Flujos de Equipo
301+
## v1.7.0Espacios de Trabajo Multi-proyecto ✅
302302

303-
### Detección de generación de código
304-
- Detectar build_runner (Flutter/Dart), protobuf, generadores OpenAPI
305-
- `pm codegen` — ejecutar herramientas de generación de código detectadas
306-
- Avisar si los archivos generados están desactualizados
303+
### Monorepo y detección multi-lenguaje
307304

308-
### Soporte de flujos de equipo
309-
- Detectar número de colaboradores desde el log de git
310-
- `pm team` — mostrar colaboradores activos y sus áreas recientes
311-
- Detección y validación de convenciones de nombres de rama
312-
- Detección de templates de PR
313-
314-
---
315-
316-
## v1.7.0 — Espacios de Trabajo Multi-proyecto
317-
318-
### Soporte monorepo
319-
- Detectar estructuras monorepo:
320-
- Cargo workspaces (`[workspace]` en Cargo.toml)
321-
- npm/pnpm/yarn workspaces
322-
- Go repos multi-módulo
323-
- Gradle builds multi-proyecto
324-
- `pm list-modules` — mostrar todos los sub-proyectos
325-
- `pm build --all` — compilar todos los módulos
326-
- `pm test --all` — testear todos los módulos
327-
- `pm run <módulo>` — ejecutar módulo específico
328-
329-
### Detección de proyectos multi-lenguaje
330-
- Detectar proyectos que usan múltiples lenguajes (ej. backend Rust + frontend Flutter)
331-
- Mostrar todos los tipos detectados: `pm info` → "Types: RUST, FLUTTER, DOCKER"
332-
- Ejecutar comandos por componente: `pm build backend`, `pm test mobile`
305+
| Funcionalidad | Estado |
306+
|---------------|--------|
307+
| Detección multi-lenguaje: `detectAll()` encuentra todos los tipos en un directorio | ✅ Hecho |
308+
| Tipos secundarios en `pm info` ("Also detected: Docker, Node.js") | ✅ Hecho |
309+
| Tipos secundarios persistidos en `projects.json` (compatible hacia atrás) | ✅ Hecho |
310+
| `pm build --all` — compilar todos los proyectos registrados con resumen | ✅ Hecho |
311+
| `pm test --all` — testear todos los proyectos registrados con resumen | ✅ Hecho |
312+
| Continuar-en-fallo: `--all` ejecuta todos, muestra resumen éxito/fallo | ✅ Hecho |
313+
| Detección de workspaces Cargo (`[workspace]` members en Cargo.toml) | ✅ Hecho |
314+
| Detección de workspaces npm/pnpm/yarn (array, objeto, patrones glob) | ✅ Hecho |
315+
| Detección multi-proyecto Gradle (`include()` en settings.gradle/kts) | ✅ Hecho |
316+
| Detección multi-módulo Go (archivos `go.mod` anidados) | ✅ Hecho |
317+
| `pm modules [nombre]` — mostrar módulos del workspace | ✅ Hecho |
318+
| Conteo de módulos en `pm info` | ✅ Hecho |
319+
| Autocompletado en shell para `modules`, `build --all`, `test --all` | ✅ Hecho |
333320

334321
---
335322

0 commit comments

Comments
 (0)