feat: externalize apps/analysis to Gitea repos, add analysis table
- Migration 007: repo_url on apps table + analysis table with FTS5 - Analysis struct, parser, CRUD, validation, hash computation - Selective purge: remote-only apps/analysis preserved across fn index - CLI: fn app list/clone/pull, fn analysis list/clone/pull - search/show/list now include analysis results - Apps removed from git tracking (content lives in Gitea repos) - .gitkeep for apps/ and analysis/ dirs - Bash functions: jupyter analysis pipeline, shell utilities - Browser domain: CDP functions moved from infra to browser Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# uv_add_packages
|
||||
# -----------------
|
||||
# Instala paquetes Python en un proyecto con uv add.
|
||||
# Inicializa pyproject.toml si no existe.
|
||||
# Fallback a pip install si uv no esta disponible.
|
||||
#
|
||||
# USO (sourced):
|
||||
# source uv_add_packages.sh
|
||||
# uv_add_packages /path/to/project jupyter jupyterlab pandas
|
||||
|
||||
uv_add_packages() {
|
||||
local project_dir="$1"
|
||||
shift
|
||||
local packages=("$@")
|
||||
|
||||
if [ ${#packages[@]} -eq 0 ]; then
|
||||
echo "uv_add_packages: se requiere al menos un paquete" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$project_dir/.venv" ]; then
|
||||
echo "uv_add_packages: no existe .venv en $project_dir — ejecuta init_uv_venv primero" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if command -v uv &>/dev/null; then
|
||||
# Inicializar pyproject.toml si no existe
|
||||
if [ ! -f "$project_dir/pyproject.toml" ]; then
|
||||
(cd "$project_dir" && uv init 2>/dev/null) || true
|
||||
fi
|
||||
(cd "$project_dir" && uv add "${packages[@]}" 2>&1)
|
||||
else
|
||||
"$project_dir/.venv/bin/pip" install "${packages[@]}" 2>&1
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user