---
name: gitea_init_app
kind: pipeline
lang: bash
domain: pipelines
version: "1.0.0"
purity: impure
signature: "gitea_init_app(directory: string, owner: string, name: string, private: string) -> string"
description: "Pipeline que crea un repositorio en Gitea, sube el directorio local y añade a egutierrez como colaborador admin. Compone gitea_create_repo → gitea_push_directory → gitea_add_collaborator."
tags: [gitea, git, pipeline, repo, create, push, launcher, infra]
uses_functions:
  - gitea_create_repo_bash_infra
  - gitea_push_directory_bash_infra
  - gitea_add_collaborator_bash_infra
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: directory
    desc: "ruta al directorio local a subir como repositorio"
  - name: owner
    desc: "usuario u organización en Gitea que será propietaria del repo"
  - name: name
    desc: "nombre del repositorio (opcional: se infiere del basename del directorio)"
  - name: private
    desc: "si el repo debe ser privado, 'true' o 'false' (default: false)"
output: "URL del repositorio creado en Gitea"
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/pipelines/gitea_init_app.sh"
---

## Ejemplo

```bash
export GITEA_URL="$(pass agentes/gitea-url)"
export GITEA_TOKEN="$(pass agentes/dataforge-token)"

# Crear repo con nombre inferido del directorio
bash bash/functions/pipelines/gitea_init_app.sh /home/lucas/myapp myorg

# Nombre explícito y repo privado
bash bash/functions/pipelines/gitea_init_app.sh /home/lucas/myapp myorg my-custom-name true

# Con flags
bash bash/functions/pipelines/gitea_init_app.sh \
    --directory /home/lucas/myapp \
    --owner myorg \
    --name my-app \
    --private true
```

## Pasos del pipeline

1. `gitea_create_repo owner name private` — crea el repo (idempotente si ya existe)
2. `gitea_push_directory directory owner repo` — inicializa git y hace push del directorio
3. `gitea_add_collaborator owner repo egutierrez admin` — añade colaborador con permisos admin

## Notas

- Requiere `GITEA_URL` y `GITEA_TOKEN` seteadas.
- Si el repo ya existe (409), el pipeline continúa con el push y añade el colaborador.
- El colaborador `egutierrez` es fijo en el pipeline — para variarlo usar las funciones individuales.
- La URL del repo se imprime a stdout al finalizar.
