feat: init_jupyter_analysis v1.1.0 — soporte --project, --desc, --tags
Nueva funcion write_analysis_md_bash_infra genera analysis.md con frontmatter.
El pipeline ahora acepta --project para crear analisis directamente en
projects/{proyecto}/analysis/{nombre}/, valida que el proyecto exista,
genera analysis.md con dir_path correcto y ejecuta fn index al final.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
---
|
||||
id: write_analysis_md_bash_infra
|
||||
name: write_analysis_md
|
||||
kind: function
|
||||
lang: bash
|
||||
domain: infra
|
||||
version: 1.0.0
|
||||
purity: impure
|
||||
signature: "write_analysis_md(analysis_dir: string, name: string, description: string, tags_csv: string) -> string"
|
||||
description: "Genera un archivo analysis.md con frontmatter valido para el registry. Calcula dir_path relativo a FN_REGISTRY_ROOT (o lo deduce buscando registry.db hacia arriba). Acepta tags como CSV."
|
||||
tags: [analysis, frontmatter, registry, markdown]
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: []
|
||||
example: "source write_analysis_md.sh && write_analysis_md projects/aurgi/analysis/ventas ventas 'Analisis de ventas' 'aurgi,ventas'"
|
||||
tested: false
|
||||
file_path: "bash/functions/infra/write_analysis_md.sh"
|
||||
params:
|
||||
- name: analysis_dir
|
||||
desc: "Directorio del analisis donde se escribira analysis.md"
|
||||
- name: name
|
||||
desc: "Nombre del analisis (se usa en frontmatter name)"
|
||||
- name: description
|
||||
desc: "Descripcion breve del analisis"
|
||||
- name: tags_csv
|
||||
desc: "Tags separados por coma (opcional)"
|
||||
output: "Ruta absoluta del analysis.md creado"
|
||||
---
|
||||
|
||||
## Notas
|
||||
|
||||
Forma parte del workflow de creacion rapida de analyses dentro de proyectos.
|
||||
|
||||
Requiere que `analysis_dir` exista fisicamente antes de llamar (para resolver path absoluto). Normalmente se llama dentro del pipeline `init_jupyter_analysis` despues de crear la estructura de carpetas.
|
||||
|
||||
El `dir_path` del frontmatter debe ser relativo a la raiz del registry para que `fn index` lo enlace correctamente al `project_id` si esta bajo `projects/{nombre}/analysis/`.
|
||||
@@ -0,0 +1,67 @@
|
||||
# write_analysis_md
|
||||
# -----------------
|
||||
# Genera un archivo analysis.md con frontmatter valido para el registry.
|
||||
# El dir_path se calcula relativo a FN_REGISTRY_ROOT.
|
||||
#
|
||||
# USO (sourced):
|
||||
# source write_analysis_md.sh
|
||||
# write_analysis_md <analysis_dir> <name> <description> [tags_csv]
|
||||
#
|
||||
# EJEMPLOS:
|
||||
# write_analysis_md projects/aurgi/analysis/sale_prices sale_prices "Comprobacion precios"
|
||||
# write_analysis_md analysis/finanzas finanzas "Exploracion gastos" "finanzas,personal"
|
||||
|
||||
write_analysis_md() {
|
||||
local analysis_dir="${1:-}"
|
||||
local name="${2:-}"
|
||||
local description="${3:-}"
|
||||
local tags_csv="${4:-}"
|
||||
|
||||
if [ -z "$analysis_dir" ] || [ -z "$name" ]; then
|
||||
echo "Uso: write_analysis_md <analysis_dir> <name> <description> [tags_csv]" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# dir_path relativo a FN_REGISTRY_ROOT
|
||||
local registry_root="${FN_REGISTRY_ROOT:-}"
|
||||
if [ -z "$registry_root" ]; then
|
||||
# Intenta deducirlo: buscar registry.db hacia arriba
|
||||
local probe="$(cd "$analysis_dir" && pwd)"
|
||||
while [ "$probe" != "/" ] && [ ! -f "$probe/registry.db" ]; do
|
||||
probe="$(dirname "$probe")"
|
||||
done
|
||||
registry_root="$probe"
|
||||
fi
|
||||
|
||||
local abs_dir="$(cd "$analysis_dir" && pwd)"
|
||||
local rel_dir="${abs_dir#${registry_root}/}"
|
||||
|
||||
# Construir array YAML de tags
|
||||
local tags_yaml="[]"
|
||||
if [ -n "$tags_csv" ]; then
|
||||
tags_yaml="[$(echo "$tags_csv" | sed 's/,/, /g')]"
|
||||
fi
|
||||
|
||||
local md_path="${analysis_dir}/analysis.md"
|
||||
cat > "$md_path" << EOF
|
||||
---
|
||||
name: ${name}
|
||||
lang: py
|
||||
domain: datascience
|
||||
description: "${description}"
|
||||
tags: ${tags_yaml}
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
framework: "jupyterlab"
|
||||
entry_point: "notebooks/main.ipynb"
|
||||
dir_path: "${rel_dir}"
|
||||
repo_url: ""
|
||||
---
|
||||
|
||||
## Notas
|
||||
|
||||
${description}
|
||||
EOF
|
||||
|
||||
echo "$md_path"
|
||||
}
|
||||
Reference in New Issue
Block a user