--- name: ensure_repo_synced kind: pipeline lang: bash domain: infra version: "1.0.0" purity: impure signature: "ensure_repo_synced(directory: string, owner?: string, repo_name?: string, branch?: string, commit_msg?: string) -> void" description: "Garantiza que un directorio tenga repo Gitea y este sincronizado. Crea el repo remoto si no existe, inicializa .git si falta, commitea cambios pendientes y pushea a origin. Idempotente." tags: [gitea, git, sync, repo, pipeline, infra] uses_functions: - gitea_create_repo_bash_infra - gitea_push_directory_bash_infra uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: directory desc: "ruta del directorio local que se quiere sincronizar" - name: owner desc: "owner Gitea (org o user); default 'dataforge'" - name: repo_name desc: "nombre del repo Gitea; default basename del directorio" - name: branch desc: "rama destino del push; default 'master'" - name: commit_msg desc: "mensaje de commit usado si hay cambios pendientes; default 'chore: sync from fn_registry'" output: "vacio — efectos en Gitea: repo creado (si no existia) y rama push-eada con los contenidos del directorio" tested: false tests: [] test_file_path: "" file_path: "bash/functions/infra/ensure_repo_synced.sh" --- # ensure_repo_synced Pipeline bash que compone `gitea_create_repo` + `gitea_push_directory` para garantizar que un directorio local este sincronizado con un repo Gitea, creando el repo si no existe. ## Cuando usarlo Cuando se quiere sincronizar a Gitea un directorio que **podria** no tener todavia repo remoto creado, sin tener que comprobarlo manualmente. Idempotente: se puede llamar repetidamente sin romper nada. ## Variables de entorno requeridas - `GITEA_URL` — base URL del Gitea (ej. `https://gitea.example.com`) - `GITEA_TOKEN` — token de API con permisos de creacion de repos y push ## Ejemplo ```bash source bash/functions/infra/ensure_repo_synced.sh # Sincronizar app local a dataforge/ ensure_repo_synced apps/mi_app # Sincronizar con owner/repo custom y rama main ensure_repo_synced apps/mi_app dataforge mi_app main "feat: initial sync" ```