7913116a8e
- .claude/agents/fn-analizador/SKILL.md - .claude/agents/fn-constructor/SKILL.md - .claude/agents/fn-executor/SKILL.md - .claude/agents/fn-mejorador/SKILL.md - .claude/agents/fn-orquestador/SKILL.md - .claude/agents/fn-recopilador/SKILL.md - .claude/commands/app.md - .claude/commands/compile.md - .claude/commands/cpp-app.md - .claude/commands/create_functions.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.8 KiB
3.8 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| clone_project_subrepos | function | bash | pipelines | 1.0.0 | impure | clone_project_subrepos <project_id> [--owner OWNER] [--dry-run] | Clona todos los sub-repos Gitea de los artefactos (apps + analysis, NO vaults) de un project. Util en PC recien clonado para traer un project entero sin clonar uno a uno. |
|
false | error_go_core |
|
Tabla de resultados por sub-repo: kind | name | status (cloned/skip/failed). Exit 0 si todo cloned o skip, 1 si algun failed. | false | bash/functions/pipelines/clone_project_subrepos.sh |
Ejemplo
# Desde fn_registry recien clonado en PC nuevo
./fn run clone_project_subrepos fn_monitoring
# Resultado esperado:
# KIND NAME STATUS
# ---------- ----------------------------------- -------
# app call_monitor [cloned]
# app registry_dashboard [cloned]
# app sqlite_api [cloned]
# analysis domain_coverage_gaps [cloned]
#
# Siguiente paso sugerido:
# cd $HOME/fn_registry && CGO_ENABLED=1 ./fn index && ./fn sync
# Con owner alternativo
./fn run clone_project_subrepos aurgi --owner miorg
# Dry-run para ver que clonaria sin ejecutar
./fn run clone_project_subrepos osint_graph --dry-run
Cuando usarla
Cuando llegas a un PC nuevo con solo fn_registry clonado y quieres trabajar en un project concreto sin clonar cada sub-repo a mano. Tambien tras fn sync cuando los pc_locations indican que faltan artefactos del project en este PC.
Flujo interno
- Valida que
registry.dbexiste y queproject_idesta en tablaprojects. - Query SQL:
SELECT 'app'... FROM apps WHERE project_id=? UNION ALL SELECT 'analysis'... FROM analysis WHERE project_id=?— vaults excluidos deliberadamente. - Por cada artefacto: si
dir_path/.gitexiste →[skip]; sirepo_urlesta vacio en BD → construye${GITEA_URL}/<owner>/<basename>; ejecutagit clone --branch master. - Imprime tabla resumen. Sugiere
fn index && fn syncal terminar.
Variables de entorno
FN_REGISTRY_ROOT— raiz del registry; default$HOME/fn_registryGITEA_URL— URL base de Gitea; defaulthttps://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com- Auth git/ssh: el pipeline confía en la config local del usuario (SSH key, credential helper)
Gotchas
- Vaults NO se clonan. Son symlinks a datos externos; el usuario los crea aparte (
mkdir -p ~/vaults/... && ln -s ...). - Si
repo_urlesta vacio en BD, se construye como${GITEA_URL}/<owner>/<basename(dir_path)>. Si tu convencion de nombres Gitea difiere, rellenarepo_urlen losapp.md/analysis.mdantes de ejecutar y re-indexa. - Auth: el script no inyecta credenciales. Si clone falla por auth, configura SSH key o credential helper (
git config --global credential.helper ...) y relanza. - El project debe existir en tabla
projectsy los artefactos llevarproject_idcorrecto en su.md. Si no, el query no devuelve filas. Verificar con:sqlite3 registry.db "SELECT id FROM projects;". - Branch
masterasumido. Todos los repos del ecosistema usanmaster(ADR 0002). Si un repo usa otra branch, clonar manualmente. - Artefactos sin
dir_pathquedan como[skip: dir_path vacio en BD]. Rellenar el campo en el.mdy re-indexar.