feat(cpp,bash): app_about + Settings submenu, ensure_repo_synced pipeline
cpp/core: nuevo modulo app_about — ventana About con project/version/desc, componible via about_window_set_info() en el init de la app y rendererizada automaticamente por fn::run_app al final de cada frame. app_menubar: el item top-level "Settings..." pasa a ser un BeginMenu "Settings" con dos subitems: "Settings..." (existente) y "About..." (nuevo). bash/infra: nueva pipeline ensure_repo_synced que compone gitea_create_repo y gitea_push_directory para garantizar repo Gitea existente + sync de un directorio local en una sola llamada idempotente. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
---
|
||||
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/<basename>
|
||||
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"
|
||||
```
|
||||
Reference in New Issue
Block a user