Capitulo 11: CLI de Spacecake
Capitulo 11: CLI de Spacecake
< Volver al Indice del Tutorial
El CLI de Spacecake
Spacecake incluye un CLI (interfaz de linea de comandos) que permite interactuar con la aplicacion de escritorio desde cualquier terminal del sistema. El comando principal es spacecake y esta disponible globalmente una vez instalada la app.
Este CLI es independiente del terminal integrado de Spacecake. Puedes usarlo desde iTerm, Alacritty, la terminal de VS Code o cualquier otro emulador de terminal. Se comunica con la instancia de Spacecake que este corriendo para abrir archivos directamente en la app.
Comando principal
El comando principal del CLI es:
spacecake open [opciones] <archivos...>
Abre uno o mas archivos en la instancia activa de Spacecake. Si Spacecake no esta corriendo, el comando falla con un error indicando que no se pudo establecer conexion.
Flags disponibles
—wait / -w
Espera hasta que el archivo se cierre en Spacecake antes de retornar al terminal. Es el flag mas importante del CLI.
spacecake open --wait archivo.txt
Sin este flag, el comando abre el archivo y retorna inmediatamente. Con --wait, el proceso se mantiene activo hasta que cierres el tab correspondiente en Spacecake.
Este flag es esencial para las integraciones con herramientas que esperan un editor bloqueante, como git commit, crontab -e y kubectl edit. Sin el, estas herramientas pensarian que terminaste de editar inmediatamente.
—line / -l N
Abre el archivo posicionando el cursor en la linea especificada.
spacecake open --line 42 src/main.ts
Util cuando un error o warning te indica una linea especifica y quieres ir directamente a ella.
—column / -c N
Abre el archivo posicionando el cursor en la columna especificada. Se combina comunmente con --line.
spacecake open --line 42 --column 10 src/main.ts
Ejemplos practicos
Abrir un archivo
spacecake open README.md
Abre el archivo en un tab nuevo de Spacecake. El comando retorna inmediatamente.
Abrir y esperar a que cierres
spacecake open --wait commit_msg.txt
Abre el archivo y mantiene el proceso en espera. Cuando cierras el tab en Spacecake, el comando retorna y el flujo en la terminal continua.
Abrir en una linea especifica
spacecake open --line 42 src/main.ts
Abre el archivo con el cursor posicionado directamente en la linea 42.
Abrir multiples archivos
spacecake open src/a.ts src/b.ts
Abre ambos archivos en tabs separados dentro de Spacecake. Cada uno se abre en su propio tab y puedes navegar entre ellos normalmente.
Comunicacion IPC
El CLI se comunica con la instancia de Spacecake en ejecucion mediante IPC (Inter-Process Communication):
- macOS y Linux: usa un Unix socket.
- Windows: usa un named pipe.
Esta comunicacion es local. El CLI no hace llamadas de red ni requiere autenticacion. Simplemente se conecta al socket y envia el comando para abrir el archivo.
Socket path
Por defecto, el socket IPC se encuentra en:
~/.spacecake/.app/cli.sock
Spacecake crea este socket al iniciar y lo elimina al cerrarse. Si el socket no existe, el CLI sabe que Spacecake no esta corriendo y muestra un error.
Variables de entorno
El CLI respeta las siguientes variables de entorno para personalizar su comportamiento:
SPACECAKE_IPC_HOOK
Sobreescribe la ruta del socket IPC. Util si necesitas apuntar el CLI a una instancia especifica de Spacecake o si has cambiado la ubicacion por defecto.
export SPACECAKE_IPC_HOOK=/tmp/spacecake-custom.sock
spacecake open archivo.txt
SPACECAKE_HOME
Cambia el directorio home de Spacecake. Por defecto es ~/.spacecake. Dentro de este directorio, Spacecake guarda configuracion, datos de sesion y el socket IPC.
export SPACECAKE_HOME=/opt/spacecake
spacecake open archivo.txt
Implementacion del CLI
El CLI esta construido con Effect-TS y BunRuntime. Se encuentra en el directorio cli/ del monorepo de Spacecake.
Effect-TS se usa para manejar los efectos secundarios (lectura de socket, comunicacion IPC, manejo de errores) de forma tipada y composable. BunRuntime proporciona el entorno de ejecucion.
La arquitectura del CLI es simple:
- Parsea los argumentos de linea de comando.
- Resuelve la ruta del socket IPC.
- Se conecta al socket.
- Envia el comando con las rutas de archivo y opciones.
- Si
--waitesta activo, mantiene la conexion abierta hasta recibir la senal de cierre. - Retorna con codigo de salida 0 (exito) o 1 (error).
Uso en scripts de automatizacion
Puedes integrar spacecake open en scripts para automatizar partes de tu flujo de trabajo.
Abrir archivos relevantes tras un build
#!/bin/bash
bun build 2> errores.log
if [ $? -ne 0 ]; then
spacecake open errores.log
fi
Revisar archivos modificados en Git
git diff --name-only | xargs spacecake open
Este comando toma la lista de archivos modificados y los abre todos en Spacecake.
Pre-commit hook con revision
#!/bin/bash
archivos_staged=$(git diff --cached --name-only)
spacecake open --wait $archivos_staged
Abre los archivos staged para una revision visual antes de confirmar el commit.
La clave para los scripts es entender cuando usar --wait y cuando no. Si el script necesita esperar a que el usuario termine de editar, usa --wait. Si solo necesita abrir archivos para referencia, omite el flag.
Siguiente: Capitulo 12: Sesiones de Claude Code —>