cuando termines y verifica que esté todo subido
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
---
|
||||
name: unregister_obsidian_vault
|
||||
kind: function
|
||||
lang: py
|
||||
domain: obsidian
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "def unregister_obsidian_vault(vault_ref: str, config_path: str = '') -> dict"
|
||||
description: "Desregistra un vault de la app de escritorio Obsidian quitando su entrada de la clave 'vaults' de ~/.config/obsidian/obsidian.json. Opera sobre la config de la app: NO borra la carpeta del vault en disco, solo hace que Obsidian deje de conocerlo. Acepta vault_ref como id exacto (hex 16) o como ruta (se normaliza a absoluta y se compara con path). Hace backup .bak antes de escribir y preserva el resto del JSON."
|
||||
tags: [obsidian, vault, unregister, config, desktop-app, obsidian-json]
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["json", "os", "shutil"]
|
||||
params:
|
||||
- name: vault_ref
|
||||
desc: "id exacto de la entrada (hex 16 chars) O ruta al vault (se normaliza a absoluta y se compara con 'path'); primero intenta match por id, luego por path"
|
||||
- name: config_path
|
||||
desc: "ruta al obsidian.json de la app; vacio usa ~/.config/obsidian/obsidian.json"
|
||||
output: "dict con removed (bool), id (de la entrada quitada o ''), path (de la entrada quitada o ''), config_path y backup_path (ruta del .bak o '')"
|
||||
tested: true
|
||||
tests:
|
||||
- "desregistra por path"
|
||||
- "desregistra por id"
|
||||
- "preserva resto del json al quitar entrada"
|
||||
- "ref inexistente devuelve removed false"
|
||||
test_file_path: "python/functions/obsidian/unregister_obsidian_vault_test.py"
|
||||
file_path: "python/functions/obsidian/unregister_obsidian_vault.py"
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```python
|
||||
import sys, os
|
||||
sys.path.insert(0, os.path.join("python", "functions"))
|
||||
from obsidian import unregister_obsidian_vault
|
||||
|
||||
# Por ruta (se normaliza a absoluta)
|
||||
res = unregister_obsidian_vault("/home/enmanuel/vaults/viejo", config_path="")
|
||||
print(res["removed"], res["id"]) # True 3f9a1c0b7e2d4a86
|
||||
|
||||
# O por id exacto
|
||||
unregister_obsidian_vault("a1b2c3d4e5f60718", config_path="")
|
||||
```
|
||||
|
||||
## Cuando usarla
|
||||
|
||||
Cuando quieras que la app de escritorio Obsidian deje de mostrar un vault en su selector sin tocar los archivos del vault en disco: limpiar entradas obsoletas, quitar un vault movido a otra ruta, o sanear `obsidian.json`. Para listar las entradas y obtener sus ids usa `list_registered_obsidian_vaults`.
|
||||
|
||||
## Gotchas
|
||||
|
||||
- **NO borra la carpeta del vault**: solo elimina la entrada de la config de la app. Los archivos `.md` y el `.obsidian/` del vault siguen en disco.
|
||||
- **Escribe la config de la app** (I/O impuro) y crea backup `.bak` antes de sobreescribir, pero **solo si encontro la entrada** (`removed=True`). Si no la encuentra, no escribe ni hace backup.
|
||||
- Resolucion de `vault_ref`: primero intenta match exacto por id; si no, normaliza el ref a ruta absoluta y compara con `path`. Un id que coincide por azar con un path nunca pasara: el match por id va primero.
|
||||
- **Single-instance**: si Obsidian esta corriendo, sigue teniendo el vault en memoria hasta reiniciar; el desregistro solo afecta al archivo de config.
|
||||
- Preserva las demas claves de nivel superior del JSON y los demas vaults.
|
||||
Reference in New Issue
Block a user