CLI de Joss — Referência Completa de Comandos
Índice · Antes: primeiros passos · Depois: analisador
A fonte canônica de comandos é cmd/joss/main.go. joss help mostra a ajuda interativa instalada e joss version a versão atual do runtime (3.6.8.0).
A CLI é o programa que recebe comandos no terminal. Incorpora um ambiente REPL
interativo (joss repl), execução direta de scripts (joss run), servidor web de alto
desempenho (joss server start / joss server), compilação nativa AOT (joss build) e um conjunto completo de ferramentas de qualidade de código e gerenciamento de pacotes (pub).
1. Execução, REPL e 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]: Executa um script.jossapós analisar o projeto (LoadProject) e validar seuPreparedProgramcom o interpretador de Joss. Os erros semânticos bloqueiam a execução; os warnings não.repl: Inicia o console interativo (Read-Eval-Print Loop) com promptjoss>para avaliar expressões, testar funções e experimentar código em tempo real. Digiteexitou pressioneCtrl+Cpara sair.server start(oujoss server): Requer o ponto de entradamain.josse inicia o servidor HTTP multinível de alto desempenho interpretado pelo runtime de servidor. PressioneqouCtrl+Cpara pará-lo com segurança.program start: Inicia a aplicação em modo desktop.build [archivo.joss]: Compilador nativo oficial de Joss. Compila o programa para um executável binário nativo real autocontido (PE.exeno Windows, ELF no Linux, Mach-O no macOS), depositando-o por padrão dentro da pastabuild/. Realiza análise semântica exaustiva (PreparedProgram), análise de alcançabilidade (Reachability Analysis), lowering para Joss Native IR (pkg/ir), verificação de IR (ir.Verifier) e geração de código nativo (pkg/backend/native).- Binários CLI puros: São compilados para código de máquina puro ultracompacto (~5.5 KB - 32 KB) sem
joss_host.dllnem trailer VFS. - Aplicações completas com serviços web/DB: Vinculam seletivamente
_joss_host_bridge(podando motores não utilizados mediante tagsno<driver>) e selam o sistema de arquivos virtual criptografado (env.enccom AES-256) dentro do executável. -o <salida>: Nome ou caminho personalizado do binário executável final.--target=<os>-<arch>(ou atalhos diretosjoss build linux,joss build macos,joss build android): Compilação cruzada integrada parawindows-amd64,windows-arm64,linux-amd64,linux-arm64,darwin-arm64(Apple Silicon),darwin-amd64eandroid-arm64(Termux).--release: Compilação otimizada para produção sem símbolos de depuração.--debug: Compilação com informações de depuração.--trace: Emite e preserva artefatos intermediários do pipeline nativo (.ir,.ll,.standalone.go).build package [ruta]: Empacota extensões e plugins em pacotes.jp(v2) assinados com Ed25519 contendo bytecode puro.build web: Prepara assets e distribuição estática para implantação web.
- Binários CLI puros: São compilados para código de máquina puro ultracompacto (~5.5 KB - 32 KB) sem
emit-ir [archivo.joss] [-o salida.ir]: Emite a representação intermediária canônica (Joss Native IR) em formato textual determinístico após a análise semântica e o lowering.analyze [archivo]: Analisa o projeto através desemanticanalyzer.LoadProject(incluindo a entrada,routes.joss,api.josseapp/**/*.joss). Retorna código diferente de zero se existirem erros e preserva arquivo/linha/coluna. Consulte ANALIZADOR.md.update: Usa o atualizador implementado pela CLI (--canary,--stable,-f).
2. Criação de Projetos (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: Gera a estrutura MVC completa de uma aplicação web com motor de views, rotas, middleware e ORM.new console: Gera um template leve para ferramentas de linha de comando (main.joss,env.joss,joss.yamleapp/).new package: Cria uma estrutura declarativa de pacote para o gerenciadorpub.new plugin: Cria um projeto de plugin multilíngue oficial traduzível para bytecode binário.jp.
3. Geradores de Código (make:* e 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]: Cria um controlador emapp/controllers/<Nombre>.joss(suporta subdiretórios comoadmin/DashboardController). Em projetos web geraindex(): mixedretornandoview(...); em console geraindex(): voidcomprint(...).make:model [Nombre]: Cria um modelo emapp/models/<Nombre>.jossque herda deModelcom$tablepluralizada automaticamente e$fillable = [].make:view [Nombre]: Cria um template emapp/views/<Nombre>.joss.htmlestendendo@extends('layouts.master')(exclusivo para projetos web).make:middleware [Nombre]: Cria um middleware emapp/middleware/<Nombre>.josscomRouter::registerMiddleware(...).make:mvc [Nombre]: Executa em um único passomake:model <Nombre>,make:controller <Nombre>Controlleremake:view <nombre>/index.- Se o arquivo de destino já existir, os geradores o ignoram de forma segura, a menos que você passe a flag
--force.
🛠️ make:crud [Tabla] (Gerador Relacional Inteligente)
Conecta ao banco de dados configurado em env.joss, inspeciona o esquema da tabela e gera automaticamente um módulo administrativo completo:
1. Inspeção de Chaves Estrangeiras (_id): Detecta relações com outras tabelas, infere nomes de modelos relacionais e autodetecta colunas visíveis (username, name, title).
2. Modelo e Modelos Relacionados: Gera app/models/Model.joss e qualquer modelo relacional faltante.
3. Controlador CRUD completo: Gera app/controllers/ModelController.joss com métodos index, create, store, edit, update e delete que incluem joins e selects automáticos.
4. Views Tailwind CSS: Gera app/views/model/index.joss.html, create.joss.html e edit.joss.html com formulários dinâmicos e menus suspensos <select> para relações.
5. Injeção na Navbar e Rotas: Injeta a opção em app/views/layouts/master.joss.html e insere as rotas protegidas dentro do grupo Router::middleware("auth") em routes.joss.
O comando só é suportado em projetos web e requer que a tabela já exista.
Os nomes de tabela/colunas são validados como identificadores antes de consultar
o esquema. O controlador gerado aceita unicamente as colunas editáveis
descobertas (não faz atribuição em massa), a exclusão usa POST com CSRF e executar
novamente o gerador não duplica rotas nem links de navegação.
🗑️ remove:crud [Tabla]
Desfaz de forma limpa a geração: remove o controlador, modelo, pasta de views e remove as rotas injetadas em routes.joss e o link da navbar.
4. Banco de Dados e Migrações
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: Gera uma nova migração com timestamp emapp/database/migrations/.create_users,create_users_tableeusersão normalizados para a tabela lógicausers;make:miggratenão é um alias e mostra a correção sugerida.migrate: Executa as migrações pendentes em ordem cronológica.migrate:fresh: Remove todas as tabelas do banco de dados e executa novamente todas as migrações do zero.db:seed: Executa os seeders populadores definidos emapp/database/seeders/.change db: Altera o motor configurado (mysql,postgres,sqlserverousqlite) ou modifica o prefixo global de tabelas (DB_PREFIX).change db migrate: Migra a quente os dados e a estrutura da conexão atual para um novo servidor remoto.
5. Compilação e Gerenciamento 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: Produz JPBC assinado a partir de backends parciais. Python/PHP/Java traduzem subconjuntos; a rota Wasm apenas valida o cabeçalho e gera stubs de demonstração. Consulte Plugins.plugin inspect: Mostra metadados, permissões declaradas e tabela de símbolos do pacote.jp.plugin verify: Verifica a assinatura digital Ed25519 e a integridade estrutural do contêiner.jp.
6. Gerenciador de Pacotes (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
Se PUB_REGISTRY_URL não for especificado, o Pub resolve as dependências utilizando o registro oficial em https://astriom.org.
7. Qualidade de Código e 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: Executa formatação, sintaxe, análise e linter. Revise sua saída: um problema de formatação é comunicado como warning neste pipeline.format: Em um arquivo, modifica por padrão salvo se você usar--check; em um diretório só escreve com--write. Use semprejoss format ruta --checkno CI.lint: Executa análise estática com regras de consistência de tipos, estilo e detecção de segredos ou credenciais fixas no código (--jsonpara integração estruturada).fix: Aplica correções automáticas lexicamente seguras (migrações delet/nil, visibilidade exigida, formatação) sem tocar em strings nem comentários, com suporte para--dry-run.test: Executa arquivos*_test.josscomtest/it,assert,assertTrue,assertFalse,assertEqual,assertNotEqual,assertNull,assertNotNulleassertThrows. Coloque--filterantes do caminho: o parser de flags deixa de ler opções após o primeiro argumento posicional.
8. Comandos de Plugins e Ajuda 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: Mostra todos os plugins instalados e disponíveis junto com seus comandos CLI expostos e seu estado ([protegido]).help plugins [nombre_plugin]: Mostra a ficha técnica, repositório, opções e comandos específicos do plugin selecionado.- Comandos de plugins: Os plugins instalados em
plugins/ou declarados emjoss.yamlpodem registrar e despachar comandos CLI autônomos e protegidos.
9. Armazenamento e Serviços em Nuvem (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: Alterna o provedor de armazenamento entre disco local e Oracle Cloud Infrastructure (OCI), permitindo sincronização bidirecional mediantesync-ociesync-local.doctor storage: Diagnostica em camadas o armazenamento declarado emSTORAGE(localouOCI) sem exibir segredos. Para OCI verifica as variáveisOCI_*, o formato dos OCIDs, a chave PEM, a correspondência do fingerprint comOCI_FINGERPRINT, autenticação real, namespace da tenancy e existência do bucket (listando os existentes se não for encontrado). Paralocalverifica se./storageé gravável. Cada diagnóstico usa um códigoJOSS-STORAGE-...(Diagnósticos) e o comando encerra com código 1 em caso de erro.STORAGE=s3ainda não possui driver e emiteJOSS-STORAGE-009.indexnow generate: Gera e configura a chave para indexação instantânea IndexNow no ambiente do projeto.