@kinetnode/versioner-cli
v0.0.1
Published
Versioner com TUI navegável — wrapper do @kinetnode/versioner com interface interativa via Cliplay.
Maintainers
Readme
versioner-cli
Interface TUI para o @kinetnode/versioner. Exibe os comandos de release em um menu navegável com o sistema de temas do @kinetnode/cliplay, sem abrir o terminal a cada release.
Antes
versioner build "Corrige login"
versioner minor "Adiciona OAuth"
versioner statusDepois
versioner-cli # navega, filtra e executa qualquer comandoA configuração de release vem do versioner.config.json. A aparência da interface vem do .cliplay.json. Dois arquivos, dois papéis.
Como funciona
O versioner-cli opera em dois modos:
Sem argumentos — abre o menu TUI:
versioner-cliCom argumentos — delega direto para o versioner, sem abrir menu:
versioner-cli build "Corrige login"
versioner-cli status
versioner-cli pullTudo que o versioner aceita também funciona via versioner-cli, incluindo flags:
versioner-cli build "hotfix" --no-push
versioner-cli minor "Nova feature" --changelog
versioner-cli major "Reescrita" --dry-runPré-requisitos
- Node.js 18 ou superior
- Git instalado e no PATH
- Os três pacotes instalados globalmente
Instalação
Instale os três pacotes de uma vez:
npm install -g @kinetnode/versioner @kinetnode/cliplay @kinetnode/versioner-cliOu separadamente, se preferir controlar as versões:
npm install -g @kinetnode/versioner
npm install -g @kinetnode/cliplay
npm install -g @kinetnode/versioner-cliVerifique as instalações:
versioner --version
cliplay --version
versioner-cli --versionConfiguração inicial
Entre na raiz do seu projeto e inicialize os dois pacotes:
cd meu-projeto
versioner init
cliplay initApós o versioner init, o assistente detecta o package.json e o app.json, pergunta a versão inicial e gera dois arquivos:
.versioner.json contador de versão
versioner.config.json comportamento de releaseApós o cliplay init, o assistente detecta os scripts disponíveis e gera:
.cliplay.json aparência da interfaceCom os dois arquivos gerados, rode:
versioner-cliversioner.config.json
Controla o comportamento do versioner e do versioner-cli em releases.
{
"versionFile": ".versioner.json",
"files": [
{ "path": "package.json", "field": "version" },
{ "path": "app.json", "field": "expo.version" }
],
"commit": {
"template": "v{version} - {message}",
"minLength": 3,
"maxLength": 100
},
"git": {
"enabled": true,
"add": true,
"addAll": true,
"commit": true,
"push": true,
"tag": false,
"tagPrefix": "v",
"tagMessage": "Release {version}"
},
"semver": false,
"changelog": false,
"workspaces": null
}| Campo | Descrição |
|---|---|
| files | Arquivos .json que recebem a versão automaticamente |
| commit.template | Template do commit. Aceita {version}, {message}, {type} |
| git.enabled | false desativa todo o fluxo Git |
| git.addAll | true faz git add .; false exige arquivos explícitos no comando |
| git.push | false faz commit mas não envia para o remoto |
| git.tag | true cria uma tag Git a cada release |
| semver | true ativa o modo SemVer com reset de patch e minor |
| changelog | true gera o CHANGELOG.md a cada release |
Quando git.commit é false ou git.enabled é false, o campo de mensagem no menu TUI é opcional — o versioner ignora a mensagem e só versiona os arquivos.
Documentação completa: README do versioner
.cliplay.json
Controla a aparência da interface do versioner-cli (e do cliplay).
{
"theme": "default",
"packageManager": "npm",
"sources": {
"package": true,
"shell": false
},
"scripts": {
"exclude": [],
"shellDirs": [".", "scripts"]
},
"labels": {},
"descriptions": {}
}| Campo | Descrição |
|---|---|
| theme | Tema visual do menu. Opções: default, ocean, forest |
| packageManager | Gerenciador de pacotes usado pelo cliplay (npm, yarn, pnpm, bun) |
| sources.package | Lê scripts do package.json (usado pelo cliplay) |
| sources.shell | Detecta arquivos .sh (usado pelo cliplay) |
| scripts.exclude | Scripts a ignorar no cliplay |
| labels | Nomes de exibição customizados para scripts do cliplay |
| descriptions | Descrições exibidas ao lado dos scripts no cliplay |
Apenas o campo theme afeta o versioner-cli. Os demais campos são usados pelo cliplay.
Documentação completa: README do cliplay
Temas
| Tema | Cor principal | Acento | Cursor |
|---|---|---|---|
| default | Roxo #7C3AED | Verde #10B981 | ❯ |
| ocean | Azul #0EA5E9 | Ciano #06B6D4 | → |
| forest | Verde #16A34A | Lima #84CC16 | ▸ |
Sem .cliplay.json, o menu usa as cores ANSI padrão do terminal. Com o arquivo, aplica o tema exato via truecolor ANSI — as mesmas cores que o cliplay exibe.
Para trocar o tema, edite o .cliplay.json:
{ "theme": "ocean" }Navegação no menu
| Tecla | Ação |
|---|---|
| ↑ ↓ | Navegar entre comandos |
| Enter | Executar o comando selecionado |
| i | Abrir campo de input (mensagem + flags) |
| r | Recarregar o menu (relê as configurações) |
| / | Filtrar comandos pelo nome |
| Esc | Limpar filtro / cancelar input |
| q | Sair |
Modo i — mensagem e flags
Pressionar i nos comandos de release (build, minor, major) abre um campo de input inline:
Mensagem + flags ex: Corrige bug --no-push█O que você digitar é separado em mensagem e flags antes de chamar o versioner:
Corrige autenticação --no-push --changelogÉ equivalente a rodar:
versioner build "Corrige autenticação" --no-push --changelogPressionar Enter sem digitar nada executa o comando sem mensagem — útil quando git.commit está desativado no config.
Comandos disponíveis no menu
| Comando | O que faz |
|---|---|
| Build | Incrementa a build e publica a release |
| Minor | Incrementa minor e build |
| Major | Incrementa major e zera minor |
| Status | Exibe versão, arquivos monitorados e estado do Git |
| Version | Exibe apenas a versão atual |
| Changelog | Gera ou atualiza o CHANGELOG.md |
| Pull | Atualiza o repositório do remoto via rebase |
| Init | Inicializa o Versioner no projeto atual |
| Ajuda | Lista todos os comandos do versioner |
Relação entre os pacotes
versioner.config.json ──► versioner
└──► versioner-cli (comportamento de release)
.cliplay.json ────────► cliplay
└────────► versioner-cli (aparência do menu)O versioner-cli não duplica lógica. Ele lê as configurações dos dois pacotes e os chama por baixo:
- Releases — chama o
CommandRouterdo@kinetnode/versioner - Aparência — lê o
themedo.cliplay.jsone aplica as cores do@kinetnode/cliplay
Desenvolvimento local
git clone https://github.com/Carlos-iso/versioner-cli
cd versioner-cli
npm link # disponível globalmente como `versioner-cli`Para testar sem instalar:
node bin/versioner.js
node bin/versioner.js build "teste" --dry-runLicença
MIT
