CLI de Joss — Referencia Completa de Comandos
Índice · Antes: primeros pasos · Después: analizador
La fuente canónica de comandos es cmd/joss/main.go. joss help muestra la ayuda interactiva instalada y joss version la versión actual del runtime (3.6.8.0).
La CLI es el programa que recibe comandos en la terminal. Incorpora un entorno REPL
interactivo (joss repl), ejecución directa de scripts (joss run), servidor web de alto
rendimiento (joss server start / joss server), compilación nativa AOT (joss build) y un conjunto completo de herramientas de calidad de código y gestión de paquetes (pub).
1. Ejecución, REPL y Build Nativo
joss run archivo.joss
joss repl
joss server start
joss program start
joss build [archivo.joss] [opciones]
joss emit-ir [archivo.joss] [-o salida.ir]
joss analyze [archivo.joss]
joss update [-f|--canary|--stable]
run [archivo]: Ejecuta un script.jossdespués de analizar el proyecto (LoadProject) y validar suPreparedProgramcon el intérprete de Joss. Los errores semánticos bloquean la ejecución; los warnings no.repl: Inicia la consola interactiva (Read-Eval-Print Loop) con promptjoss>para evaluar expresiones, probar funciones y experimentar con código en tiempo real. Escribeexito presionaCtrl+Cpara salir.server start(ojoss server): Requiere el punto de entradamain.josse inicia el servidor HTTP multinivel de alto rendimiento interpretado por el runtime de servidor. PresionaqoCtrl+Cpara detenerlo de manera segura.program start: Inicia la aplicación en modo escritorio.build [archivo.joss]: Compilador nativo oficial de Joss. Compila el programa a un ejecutable binario nativo real autocontenido (PE.exeen Windows, ELF en Linux, Mach-O en macOS) depositándolo por defecto dentro de la carpetabuild/. Realiza análisis semántico exhaustivo (PreparedProgram), análisis de alcance (Reachability Analysis), lowering a Joss Native IR (pkg/ir), verificación de IR (ir.Verifier) y generación de código nativo (pkg/backend/native).- Binarios CLI puros: Se compilan a código máquina puro ultracompacto (~5.5 KB - 32 KB) sin
joss_host.dllni trailer VFS. - Aplicaciones completas con servicios web/DB: Enlazan selectivamente
_joss_host_bridge(podando motores no utilizados mediante tagsno<driver>) y sellan el sistema de archivos virtual encriptado (env.enccon AES-256) dentro del ejecutable. -o <salida>: Nombre o ruta personalizada del binario ejecutable final.--target=<os>-<arch>(o atajos directosjoss build linux,joss build macos,joss build android): Compilación cruzada integrada parawindows-amd64,windows-arm64,linux-amd64,linux-arm64,darwin-arm64(Apple Silicon),darwin-amd64yandroid-arm64(Termux).--release: Compilación optimizada para producción sin símbolos de depuración.--debug: Compilación con información de depuración.--trace: Emite y conserva artefactos intermedios del pipeline nativo (.ir,.ll,.standalone.go).build package [ruta]: Empaqueta extensiones y plugins en paquetes.jp(v2) firmados con Ed25519 conteniendo bytecode puro.build web: Prepara assets y distribución estática para despliegue web.
- Binarios CLI puros: Se compilan a código máquina puro ultracompacto (~5.5 KB - 32 KB) sin
emit-ir [archivo.joss] [-o salida.ir]: Emite la representación intermedia canónica (Joss Native IR) en formato textual determinista tras el análisis semántico y lowering.analyze [archivo]: Analiza el proyecto a través desemanticanalyzer.LoadProject(incluyendo la entrada,routes.joss,api.jossyapp/**/*.joss). Devuelve código distinto de cero si existen errores y conserva archivo/línea/columna. Consulte ANALIZADOR.md.update: Usa el actualizador implementado por el CLI (--canary,--stable,-f).
2. Creación de Proyectos (new)
joss new mi_proyecto
joss new web mi_proyecto
joss new console mi_cli
joss new package mi_paquete
joss new plugin mi_plugin
new web/new: Genera la estructura MVC completa de una aplicación web con motor de vistas, rutas, middleware y ORM.new console: Genera una plantilla ligera para herramientas de línea de comandos (main.joss,env.joss,joss.yamlyapp/).new package: Crea una estructura declarativa de paquete para el gestorpub.new plugin: Crea un proyecto de plugin multilenguaje oficial traducible a bytecode binario.jp.
3. Generadores de Código (make:* y remove:*)
joss make:controller UsersController
joss make:controller admin/DashboardController
joss make:middleware AuthGuard
joss make:model User
joss make:view users/index
joss make:mvc Product
joss make:crud products
joss remove:crud products
joss make:migration create_products
flowchart LR
CLI["joss make:<componente>"] --> CTRL["make:controller → app/controllers/<Nombre>.joss"]
CLI --> MOD["make:model → app/models/<Nombre>.joss (extends Model)"]
CLI --> VIEW["make:view → app/views/<nombre>.joss.html"]
CLI --> MID["make:middleware → app/middleware/<Nombre>.joss"]
CLI --> MVC["make:mvc → Modelo + Controlador + Vista"]
CLI --> MIG["make:migration → app/database/migrations/<timestamp>_<nombre>.joss"]
CLI --> CRUD["make:crud → Modelo + Controlador + Vistas Tailwind + Rutas"]
make:controller [Nombre]: Crea un controlador enapp/controllers/<Nombre>.joss(admite subdirectorios comoadmin/DashboardController). En proyectos web generaindex(): mixedretornandoview(...); en consola generaindex(): voidconprint(...).make:model [Nombre]: Crea un modelo enapp/models/<Nombre>.jossque hereda deModelcon$tablepluralizada automáticamente y$fillable = [].make:view [Nombre]: Crea una plantilla enapp/views/<Nombre>.joss.htmlextendiendo@extends('layouts.master')(exclusivo para proyectos web).make:middleware [Nombre]: Crea un middleware enapp/middleware/<Nombre>.jossconRouter::registerMiddleware(...).make:mvc [Nombre]: Ejecuta en un solo pasomake:model <Nombre>,make:controller <Nombre>Controllerymake:view <nombre>/index.- Si el archivo destino ya existe, los generadores lo omiten de forma segura salvo que pases el flag
--force.
🛠️ make:crud [Tabla] (Generador Relacional Inteligente)
Conecta a la base de datos configurada en env.joss, inspecciona el esquema de la tabla y genera automáticamente un módulo administrativo completo:
1. Inspección de Claves Foráneas (_id): Detecta relaciones con otras tablas, infiere nombres de modelos relacionales y auto-detecta columnas visibles (username, name, title).
2. Modelo y Modelos Relacionados: Genera app/models/Model.joss y cualquier modelo relacional faltante.
3. Controlador CRUD completo: Genera app/controllers/ModelController.joss con métodos index, create, store, edit, update y delete que incluyen joins y selects automáticos.
4. Vistas Tailwind CSS: Genera app/views/model/index.joss.html, create.joss.html y edit.joss.html con formularios dinámicos y menús desplegables <select> para relaciones.
5. Inyección en Navbar y Rutas: Inyecta la opción en app/views/layouts/master.joss.html e inserta las rutas protegidas dentro del grupo Router::middleware("auth") en routes.joss.
El comando sólo se admite en proyectos web y requiere que la tabla ya exista.
Los nombres de tabla/columnas se validan como identificadores antes de consultar
el esquema. El controlador generado acepta únicamente las columnas editables
descubiertas (no hace asignación masiva), el borrado usa POST con CSRF y volver
a ejecutar el generador no duplica rutas ni enlaces de navegación.
🗑️ remove:crud [Tabla]
Deshace limpiamente la generación: elimina el controlador, modelo, carpeta de vistas y remueve las rutas inyectadas en routes.joss y el enlace del navbar.
4. Base de Datos y Migraciones
joss make:migration create_users_table
joss migrate
joss migrate:fresh
joss db:seed
joss change db mysql
joss change db sqlite
joss change db prefix app_
joss change db migrate --host=HOST --port=3306 --database=DB --user=USER --password=PASS
make:migration: Genera una nueva migración con timestamp enapp/database/migrations/.create_users,create_users_tableyuserse normalizan a la tabla lógicausers;make:miggrateno es un alias y muestra la corrección sugerida.migrate: Ejecuta las migraciones pendientes en orden cronológico.migrate:fresh: Elimina todas las tablas de la base de datos y vuelve a ejecutar todas las migraciones desde cero.db:seed: Ejecuta los seeders pobladores definidos enapp/database/seeders/.change db: Cambia el motor configurado (mysql,postgres,sqlserverosqlite) o modifica el prefijo global de tablas (DB_PREFIX).change db migrate: Migra en caliente los datos y estructura de la conexión actual hacia un nuevo servidor remoto.
5. Compilación y Gestión de Plugins (.jp)
joss plugin compile .
joss plugin compile script.py --lang=python --name=mi_plugin --exports=calcular
joss plugin inspect mi_plugin.jp
joss plugin verify mi_plugin.jp
plugin compile: Produce JPBC firmado desde backends parciales. Python/PHP/Java traducen subconjuntos; la ruta Wasm sólo valida la cabecera y genera stubs de demostración. Consulte Plugins.plugin inspect: Muestra metadatos, permisos declarados y tabla de símbolos del paquete.jp.plugin verify: Comprueba la firma digital Ed25519 y la integridad estructural del contenedor.jp.
6. Gestor de Paquetes (pub)
joss pub add paquete ^1.2.0
joss pub remove paquete
joss pub install
joss pub install --offline
joss pub update
joss pub search termino
joss pub info paquete
joss pub publish
joss pub login
joss pub logout
joss pub cache clean
Si no se especifica PUB_REGISTRY_URL, Pub resuelve las dependencias utilizando el registro oficial en https://astriom.org.
7. Calidad de Código y Tooling (check, format, lint, fix, test)
joss check [ruta]
joss format [ruta] [--write|--check]
joss lint [ruta] [--json]
joss fix [ruta] [--dry-run]
joss test [--filter=nombre] [ruta]
check: Ejecuta formato, sintaxis, análisis y linter. Revisa su salida: un problema de formato se comunica como warning en este pipeline.format: En un archivo, modifica por defecto salvo que uses--check; en un directorio sólo escribe con--write. Usa siemprejoss format ruta --checken CI.lint: Ejecuta análisis estático con reglas de consistencia de tipos, estilo y detección de secretos o credenciales en código duro (--jsonpara integración estructurada).fix: Aplica correcciones automáticas léxicamente seguras (migraciones delet/nil, visibilidad requerida, formateo) sin tocar strings ni comentarios, con soporte para--dry-run.test: Ejecuta archivos*_test.josscontest/it,assert,assertTrue,assertFalse,assertEqual,assertNotEqual,assertNull,assertNotNullyassertThrows. Coloca--filterantes de la ruta: el parser de flags deja de leer opciones tras el primer argumento posicional.
8. Comandos de Plugins y Ayuda Dinámica
joss help plugins
joss help plugins [nombre_plugin]
joss ai:activate
joss brevo:config [--enable|--disable] [--api-key=CLAVE]
joss backup:create [destino]
joss backup:restore <archivo.zip>
joss bg:remove <input.jpg> [output.png]
joss notify:send <canal> <mensaje>
help plugins: Muestra todos los plugins instalados y disponibles junto con sus comandos CLI expuestos y su estado ([protegido]).help plugins [nombre_plugin]: Muestra la ficha técnica, repositorio, opciones y comandos específicos del plugin seleccionado.- Comandos de plugins: Los plugins instalados en
plugins/o declarados enjoss.yamlpueden registrar y despachar comandos CLI autónomos y protegidos.
9. Almacenamiento y Servicios en la Nube (userstorage, doctor e indexnow)
joss userstorage local
joss userstorage oci
joss userstorage sync-oci
joss userstorage sync-local
joss doctor storage
joss indexnow generate
userstorage: Conmuta el proveedor de almacenamiento entre disco local y Oracle Cloud Infrastructure (OCI), permitiendo sincronización bidireccional mediantesync-ociysync-local.doctor storage: Diagnostica por capas el almacenamiento declarado enSTORAGE(localuOCI) sin imprimir secretos. Para OCI comprueba las variablesOCI_*, el formato de los OCIDs, la llave PEM, que su fingerprint coincida conOCI_FINGERPRINT, la autenticación real, el namespace del tenancy y la existencia del bucket (si no existe, lista los que sí hay). Paralocalverifica que./storagesea escribible. Cada hallazgo usa un códigoJOSS-STORAGE-...(Diagnósticos) y el comando termina con código 1 si hay errores.STORAGE=s3todavía no tiene driver y se reporta comoJOSS-STORAGE-009.indexnow generate: Genera y configura la clave para indexación instantánea IndexNow en el entorno del proyecto.