---
name: deploy_capacitor_to_emulator
kind: pipeline
lang: bash
domain: pipelines
version: "1.0.0"
purity: impure
signature: "deploy_capacitor_to_emulator(app_dir: string, avd_name?: string, package_name?: string) -> void"
description: "Pipeline end-to-end: build Capacitor APK + arranca AVD + instala + opcionalmente lanza la app. Valida que el AVD existe, construye el APK con capacitor_build_apk, arranca el emulador de forma idempotente, instala el APK y lanza la app si se da package_name. Imprime comando logcat sugerido al final."
tags: [android, capacitor, emulator, deploy, launcher]
uses_functions:
  - capacitor_build_apk_bash_pipelines
  - android_emulator_list_bash_infra
  - android_emulator_start_bash_infra
  - android_apk_install_bash_infra
  - android_logcat_bash_infra
  - adb_wsl_bash_infra
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/pipelines/deploy_capacitor_to_emulator.sh"
params:
  - name: app_dir
    desc: "Path al directorio de la app Capacitor. Debe contener package.json y ser un proyecto web compatible con Capacitor. Puede ser relativo al cwd o absoluto."
  - name: avd_name
    desc: "Nombre del AVD Android a usar como destino de deploy. Default: Medium_Phone_API_35. Debe existir en la lista de AVDs del sistema."
  - name: package_name
    desc: "Package id Android de la app (ej: com.fnregistry.voiceguide). Opcional. Si se provee, lanza la app tras instalarla y muestra comando logcat sugerido."
output: "Stdout con pasos de cada fase. Exit 0 = APK instalado (y lanzado si se dio package_name) en el emulador. Exit != 0 si alguna fase falló (AVD no existe, build falla, emulador no arranca, install falla)."
---

## Ejemplo

```bash
# Build + deploy en AVD por defecto, sin lanzar app
bash bash/functions/pipelines/deploy_capacitor_to_emulator.sh apps/voice_guide

# Build + deploy + lanzar app
bash bash/functions/pipelines/deploy_capacitor_to_emulator.sh \
    apps/voice_guide \
    Medium_Phone_API_35 \
    com.fnregistry.voiceguide

# Con AVD personalizado
bash bash/functions/pipelines/deploy_capacitor_to_emulator.sh \
    apps/voice_guide \
    Pixel_7_API_34 \
    com.fnregistry.voiceguide
```

## Notas

- El APK se busca como `*.apk` en la raiz de `app_dir` tras el build (patron de `capacitor_build_apk`).
- El arranque del emulador es idempotente via `android_emulator_start`: si ya hay un emulador corriendo no lanza otro.
- El logcat no se sigue automaticamente (no bloqueante). Se imprime el comando para que el usuario lo ejecute si quiere.
- Requiere WSL2 + Android SDK instalado en Windows (usa `adb_wsl` para resolver `adb.exe`).
- La fase de build puede tardar varios minutos en la primera ejecucion (descarga de Gradle, Capacitor, etc.).
