Skip to main content

Command Palette

Search for a command to run...

Frameworks e ferramentas para criar CLI em shell/bash

Evoluindo seus scripts para ferramentas CLI completas com Bashly e outros

Updated
3 min read
Frameworks e ferramentas para criar CLI em shell/bash

Bashly: Framework CLI para Shell Script

Bashly Demo

Bashly é um gerador de aplicações de linha de comando que transforma configurações YAML em scripts bash estruturados e funcionais. Diferente de parsers tradicionais que processam argumentos em tempo de execução, o Bashly compila definições declarativas em código bash otimizado, eliminando dependências externas no binário final. A ferramenta é escrita em Ruby mas o output é bash puro, garantindo portabilidade e performance nativa em qualquer sistema Unix-like.

A configuração utiliza YAML para definir comandos, subcomandos, flags, argumentos posicionais e validações. Cada elemento declarado no bashly.yml é convertido em funções bash com parsing automático, mensagens de help formatadas e completions para shells modernos. O framework separa lógica de interface: enquanto o Bashly gera toda a camada de CLI (parsing, validação, help), o desenvolvedor implementa apenas a lógica de negócio em arquivos de função isolados (src/ por padrão).

Tecnicamente, o Bashly gera código bash seguindo boas práticas: uso de set -euo pipefail, funções modulares, tratamento de edge cases em parsing POSIX e GNU-style, validação de tipos primitivos (string, integer, file, directory) e arrays de argumentos variáveis. Suporta flags booleanas, flags com valores, argumentos obrigatórios/opcionais, defaults, choices restritos e variáveis de ambiente como fallback. A engine de templates permite customização via Mustache, possibilitando adaptar o output gerado para padrões específicos de projeto.

Para projetos que exigem CLIs com múltiplos subcomandos, autocompleção profissional e documentação consistente, o Bashly elimina boilerplate repetitivo e reduz bugs de parsing manual.

A separação entre definição (YAML) e implementação (bash functions) facilita manutenção, testes unitários e versionamento da interface CLI independente da lógica interna.

O comando bashly add oferece scaffolding automático para testes, validations customizadas, colors, config files e outros recursos comuns em CLIs enterprise-grade.

https://bashly.dev/

https://bashly.dev/usage/writing-your-scripts/

Exemplos: https://bashly.dev/examples/

Requisitos: Ruby 3.2+ e Bash 4.2+

Instalação:

gem install bashly

Outras ferramentas para CLI em Bash/Shell

Geradores de CLI completos

  • argc - Parser declarativo, YAML/comentários especiais, autocompleção

  • getoptions - Parser POSIX puro, sem dependências, sintaxe declarativa

  • argbash - Gera código de parsing a partir de template, suporta tipos

  • claptrap.sh - Inspirado no clap do Rust, parsing e help automático

Frameworks minimalistas

  • sub - Pattern de subcomandos

  • shellfire - Framework modular para scripts estruturados

  • bats - Focado em testes, mas útil para estruturar CLIs testáveis

Libs de parsing puro

  • shFlags - Flags estilo gflags do Google

  • docopts - Implementação shell do docopt

  • easyoptions - Parser simples via comentários no script

Recomendação por caso

Projetos complexos: bashly, argc
Scripts POSIX portáveis: getoptions
Integração com existente: shFlags, docopts
Controle total: pattern case + funções próprias

Ferramentas como argc e getoptions equilibram simplicidade e funcionalidade sem adicionar peso ao projeto.

Tech

Part 6 of 50

Technical topics. Code, Linux, Network... Exercising the Tech Writer and teacher in me. Articles covering topics from across the entire OSI layer. Artigos passando por assuntos de toda a camada OSI.

Up next

DAW: Ardour, Mixbus e LiveTrax

O poder do Open Source e o tempero da Harrison Audio e SSL: gravações caseiras, podcasts até grandes estúdios musicais