---
name: gradle_clean
kind: function
lang: bash
domain: infra
version: "1.0.0"
purity: impure
signature: "gradle_clean(project_dir: string) -> int"
description: "Limpia build artifacts de un proyecto Android (gradle clean + rm .gradle + rm build)."
tags: [android, gradle, clean, build, pendiente-usar]
params:
  - name: project_dir
    desc: "Raiz del proyecto Gradle"
output: "Stdout build log de gradle clean. Exit code = exit gradlew."
uses_functions: [gradle_run_bash_infra]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/infra/gradle_clean.sh"
notes: "Util cuando builds incrementales se corrompen. NO borra .idea ni gradle.properties. Para reset total usar `rm -rf $project_dir/{.gradle,build,app/build}`."
---

## Ejemplo

```bash
# Como libreria
source bash/functions/infra/gradle_clean.sh
gradle_clean /path/to/MyApp

# Directo
bash bash/functions/infra/gradle_clean.sh /path/to/MyApp
```

## Comportamiento

1. Invoca `gradle_run "$project_dir" "clean"` — si falla, propaga su exit code y para.
2. `rm -rf "$project_dir/.gradle"` — best-effort (ignora si no existe).
3. `rm -rf "$project_dir/build"` — best-effort (ignora si no existe).
4. Retorna 0 siempre que gradle clean haya terminado OK.

## Notas

Source-able y ejecutable directo. Sourcear `gradle_run.sh` al inicio garantiza
que `JAVA_HOME` y `ANDROID_HOME` se resuelven con la misma logica que el resto
de las funciones gradle_*.

Los directorios `.gradle` (cache de dependencias y metadata del daemon) y
`build` (outputs compilados) son los principales responsables de builds
corrompidos. Su eliminacion fuerza una descarga/recompilacion completa en el
siguiente build.
---
