Pular para o conteúdo principal

CLI — Nidus CLI

O Nidus CLI é uma ferramenta de linha de comando escrita em Rust para scaffolding, geração de código e gerenciamento de dependências de projetos Delphi com o framework Nidus.

Download

Baixe o binário para sua plataforma na página de releases.


Instalação

Binário pré-compilado

PlataformaArquivo
WindowsNidus-windows.exe
LinuxNidus-linux
macOSNidus-macos

Baixe e adicione ao PATH do sistema.

Build a partir do código

cargo install --git https://github.com/ModernDelphiWorks/Nidus-CLI

Tab-completion no terminal

# Bash
Nidus completions bash >> ~/.bashrc

# Zsh
Nidus completions zsh >> ~/.zshrc

# Fish
Nidus completions fish > ~/.config/fish/completions/Nidus.fish

Quick Start

# 1. Criar um projeto novo
Nidus new MyApp

# 2. Instalar as dependências
cd MyApp
Nidus install

# 3. Gerar um módulo
Nidus gen module User

# 4. Verificar a saúde do projeto
Nidus doctor

Comandos

new — Criar projeto

Cria a estrutura completa de um projeto Delphi/Nidus: .dpr, AppModule.pas, src/modules/, .gitignore.

Nidus new <nome> [--path <dir>] [--with-tests]
OpçãoDescrição
--path <dir>Diretório onde o projeto será criado (padrão: .)
--with-testsCria também o diretório test/

init — Inicializar em projeto existente

Cria o nidus.json em um projeto Delphi já existente, sem alterar os fontes.

Nidus init [--download <url>] [--mainsrc <dir>] [--force]
OpçãoDescrição
--download <url>URL do framework principal (padrão: repo oficial)
--mainsrc <dir>Diretório de fontes (padrão: src/)
--forceSobrescreve se nidus.json já existir

install — Instalar dependências

Clona todas as dependências listadas no nidus.json, sincroniza os paths do .dproj e grava o nidus.lock.

Nidus install
Nidus install --add <url> [--branch <branch>]
Nidus install --remove <url>
Nidus install --frozen
OpçãoDescrição
--add <url>Registra e clona uma nova dependência. Faz rollback no nidus.json se o clone falhar.
--branch <branch>Branch a usar com --add
--remove <url>Remove uma dependência do nidus.json
--frozenFalha se o nidus.lock estiver ausente ou se algum repo divergir do commit registrado

update — Atualizar dependências

Atualiza todas as dependências (ou uma específica) para o último commit remoto e grava o nidus.lock.

Nidus update
Nidus update --dep <url-ou-nome>

gen — Gerar componentes

Gera arquivos .pas de um módulo Nidus a partir de templates.

Nidus gen <tipo> <nome> [opções]

Tipos disponíveis:

TipoArquivos gerados
moduleXxxModule.pas, XxxHandler.pas
handlerXxxHandler.pas
controllerXxxController.pas
serviceXxxService.pas
repositoryXxxRepository.pas
interfaceXxxInterface.pas
infraXxxInfra.pas
scaffoldTodos os acima

Opções:

OpçãoDescrição
--path <dir>Caminho para a pasta src/ (padrão: ./src)
--overwriteSobrescreve arquivos existentes
--template <nome>Usa um template customizado de ~/.Nidus/templates/<nome>
--dry-runMostra o que seria gerado sem escrever nada
--interactive/-iMenu interativo para selecionar os componentes (requer TTY)

Exemplos:

Nidus gen module User
Nidus gen scaffold Order --dry-run
Nidus gen scaffold Payment --interactive
Nidus gen module Auth --template jwt-template

remove — Remover módulo

Remove o diretório do módulo e limpa as units do arquivo .dpr.

Nidus remove <nome>
Nidus rm <nome>

sync — Sincronizar paths do .dproj

Adiciona os sub-paths src/Source das dependências ao DCC_UnitSearchPath do .dproj.

Nidus sync
Nidus add-paths

doctor — Diagnóstico do projeto

Executa uma verificação completa em 5 seções e reporta problemas e avisos.

Nidus doctor
Nidus doctor --fix
Nidus doctor --json
SeçãoVerificações
A. ConfiguraçãoValidade do nidus.json, mainsrc, URL do download
B. Estrutura.dpr, .dproj, src/, AppModule.pas, modules/
C. DependênciasStatus do clone, integridade do .git/, sync do DCC_UnitSearchPath
D. ConsistênciaPaths de units no .dpr, registro de módulos, referências no AppModule
E. AmbienteTemplates customizados, versão do CLI
OpçãoDescrição
--fixCorrige automaticamente: clona deps ausentes (C1/C2) e sincroniza paths (C4)
--jsonSaída estruturada em JSON — ideal para pipelines CI/CD

deps — Listar dependências

Exibe todas as dependências com status de clone, branch e último commit (SHA/data).

Nidus deps
Nidus deps --json

outdated — Verificar atualizações

Busca o remoto de cada dependência e compara com o HEAD local. Reporta quais têm novos commits — sem modificar nada.

Nidus outdated

clean — Limpar artefatos de build

Remove artefatos de compilação Delphi. Arquivos rastreados pelo git nunca são deletados.

Nidus clean              # modo dry-run (apenas lista)
Nidus clean --execute # deleta de verdade
Nidus clean --execute --yes # sem confirmação
Nidus clean --path ./MyApp
RemovidosItens
Arquivos*.dcu, *.dcp, *.bpl, *.bpi, *.drc, *.map
DiretóriosWin32/, Win64/, OSX32/, OSX64/, __history/, __recovery/

template — Gerenciar templates

Nidus template list
Nidus template install <fonte>
Nidus template update [<nome>]
Nidus template create <nome>
Nidus template config <nome> [<chave> <valor>]
Nidus template publish <nome> <git-url>
SubcomandoDescrição
listLista templates instalados
install <fonte>Instala a partir de URL git ou caminho local
update [nome]Atualiza um ou todos os templates
create <nome>Cria um novo scaffold de template
config <nome>Lê ou define configuração do template
publish <nome> <url>Publica um template local em um repositório git remoto

info — Informações do projeto

Exibe o banner do CLI, versão e — quando nidus.json estiver presente — um resumo do projeto.

Nidus info

Estrutura gerada pelo new

MyApp/
├── MyApp.dpr
├── nidus.json
├── nidus.lock
├── .gitignore
└── src/
├── AppModule.pas
└── modules/
└── user/
├── UserModule.pas
├── UserHandler.pas
├── UserController.pas
├── UserService.pas
├── UserRepository.pas
├── UserInterface.pas
└── UserInfra.pas

nidus.json

{
"name": "MyApp",
"mainsrc": "src/",
"download": "https://github.com/ModernDelphiWorks/Nidus.git",
"dependencies": {
"https://github.com/HashLoad/Horse.git": "",
"https://github.com/ModernDelphiWorks/ModernSyntax.git": ""
}
}
CampoDescrição
mainsrcCaminho relativo para o diretório de fontes
downloadURL do repositório do framework principal
dependenciesMapa "url": "branch" (string vazia = branch padrão)

nidus.lock

Gerado automaticamente pelo install e update. Registra o SHA exato de cada dependência clonada para builds reproduzíveis.

{
"version": "1",
"generated_at": "2026-03-28T12:00:00Z",
"dependencies": {
"https://github.com/HashLoad/Horse.git": {
"branch": "master",
"commit": "abc123...",
"locked_at": "2026-03-28T12:00:00Z"
}
}
}

Use Nidus install --frozen para garantir builds exatos em CI/CD.