English {#english}
CrabPascal CLI: check, run, and build-exe
The CrabPascal CLI (v2.22.0) exposes three commands that cover most daily workflows: validate code, execute it, or ship a native binary. Understanding when to use each saves time and avoids confusion about gcc dependencies.
Command overview
crab-pascal check MyApp.dpr # Analyze only — no execution
crab-pascal run MyApp.dpr # Execute via internal runtime
crab-pascal build-exe MyApp.dpr # Generate C + compile with gcc/clang
There is also preproc for {$IFDEF} directives and parse for AST debugging.
check — fast feedback loop
Use check when you want diagnostics without side effects:
crab-pascal check examples/crud/crud.dpr
Output follows the VS Code-friendly format:
crud.dpr:42:10: error: Unknown identifier 'FooBar'
This runs the full frontend: lexer, parser, and semantic analyzer. Ideal for:
- Pre-commit hooks
- CI pipelines (
crab-pascal check src/*.dpr) - Editor integration via the
crabpascal.crabpascalextension
run — zero-dependency execution
run interprets your program through the internal runtime. No gcc required:
crab-pascal run examples/matematica/matematica.dpr
Horse HTTP servers work here too:
crab-pascal run examples/crud/crud.dpr
# Server listens on port 9000
curl http://localhost:9000/produtos
The runtime includes RTL shims (System.SysUtils, System.JSON, generics collections) loaded from rtl/ search paths.
build-exe — native binaries
When gcc or clang is available, build-exe emits C intermediate code and compiles it:
crab-pascal build-exe HelloWorld.dpr --output HelloWorld.exe
./HelloWorld.exe
Without a C compiler, CrabPascal tells you explicitly — use run instead. This dual-mode design is intentional: develop with run, ship with build-exe.
Practical workflow
A typical session:
# 1. Edit code
# 2. Validate
crab-pascal check MyApp.dpr
# 3. Run tests
crab-pascal run MyApp.dpr
# 4. Optional: ship
crab-pascal build-exe MyApp.dpr --output bin/MyApp.exe
For batch builds on Windows:
$projects = @("App1", "App2")
foreach ($p in $projects) {
crab-pascal check "$p.dpr"
crab-pascal build-exe "$p.dpr" --output "bin\$p.exe"
}
preproc — conditional compilation
Delphi projects often use preprocessor directives:
{$IFDEF DEBUG}
WriteLn('Debug mode');
{$ENDIF}
Expand them before inspection:
crab-pascal preproc MyApp.dpr > MyApp.expanded.pas
Configure symbols in crabpascal.toml under [preprocessor].
Tips
- Add the binary to PATH or configure the VS Code extension path setting.
- Use
crab-pascal --versionto confirm v2.22.0 in CI logs. - When
checkpasses butrunfails, report it — runtime parity is an active sprint goal.
The CLI is the backbone of CrabPascal. Master these three commands and you can develop Pascal anywhere a terminal runs.
Português {#portugus}
CLI do CrabPascal: check, run e build-exe
A CLI do CrabPascal (v2.22.0) expõe três comandos que cobrem a maior parte do dia a dia: validar código, executá-lo ou gerar binário nativo. Saber quando usar cada um economiza tempo e evita confusão sobre dependências do gcc.
Visão geral dos comandos
crab-pascal check MyApp.dpr # Só analisa — não executa
crab-pascal run MyApp.dpr # Executa via runtime interno
crab-pascal build-exe MyApp.dpr # Gera C + compila com gcc/clang
Há também preproc para diretivas {$IFDEF} e parse para debug da AST.
check — loop de feedback rápido
Use check quando quiser diagnósticos sem efeitos colaterais:
crab-pascal check examples/crud/crud.dpr
A saída segue o formato amigável ao VS Code:
crud.dpr:42:10: error: Unknown identifier 'FooBar'
Isso executa todo o frontend: lexer, parser e analisador semântico. Ideal para:
- Hooks de pre-commit
- Pipelines de CI (
crab-pascal check src/*.dpr) - Integração com a extensão
crabpascal.crabpascal
run — execução sem dependências
O run interpreta seu programa pelo runtime interno. Não precisa de gcc:
crab-pascal run examples/matematica/matematica.dpr
Servidores Horse HTTP também funcionam:
crab-pascal run examples/crud/crud.dpr
# Servidor na porta 9000
curl http://localhost:9000/produtos
O runtime inclui shims RTL (System.SysUtils, System.JSON, coleções genéricas) carregados dos search paths em rtl/.
build-exe — binários nativos
Com gcc ou clang disponível, o build-exe emite C intermediário e compila:
crab-pascal build-exe HelloWorld.dpr --output HelloWorld.exe
./HelloWorld.exe
Sem compilador C, o CrabPascal avisa explicitamente — use run. Esse design dual-mode é intencional: desenvolva com run, distribua com build-exe.
Fluxo prático
Uma sessão típica:
# 1. Editar código
# 2. Validar
crab-pascal check MyApp.dpr
# 3. Executar testes
crab-pascal run MyApp.dpr
# 4. Opcional: distribuir
crab-pascal build-exe MyApp.dpr --output bin/MyApp.exe
Build em lote no Windows:
$projects = @("App1", "App2")
foreach ($p in $projects) {
crab-pascal check "$p.dpr"
crab-pascal build-exe "$p.dpr" --output "bin\$p.exe"
}
preproc — compilação condicional
Projetos Delphi usam diretivas de pré-processador:
{$IFDEF DEBUG}
WriteLn('Modo debug');
{$ENDIF}
Expanda antes de inspecionar:
crab-pascal preproc MyApp.dpr > MyApp.expanded.pas
Configure símbolos em crabpascal.toml na seção [preprocessor].
Dicas
- Coloque o binário no PATH ou configure o caminho na extensão VS Code.
- Use
crab-pascal --versionpara confirmar v2.22.0 nos logs de CI. - Se
checkpassa masrunfalha, reporte — paridade do runtime é meta ativa de sprint.
A CLI é a espinha dorsal do CrabPascal. Domine esses três comandos e você desenvolve Pascal em qualquer lugar onde haja terminal.
Published on dev.to/@crabpascal · Código em CrabPascal
Top comments (0)