Este script automatiza e padroniza suas mensagens de commit seguindo o padrão Conventional Commits, criando um fluxo de trabalho mais organizado e profissional.
O commit-mensagem.sh é um script interativo em Bash que:
- Guia você através de um processo estruturado de commit
- Padroniza mensagens seguindo convenções modernas
- Automatiza o processo completo:
git add,git commitegit push - Oferece interface visual colorida e intuitiva
- Cores modernas: Esquema de cores azul e branco profissional
- Ícones expressivos: Emojis para cada tipo de commit
- Layout estruturado: Bordas e formatação clara
- Feedback visual: Indicadores de sucesso, erro e cancelamento
| Tipo | Ícone | Descrição |
|---|---|---|
feat |
🚀 | Nova funcionalidade |
fix |
🐛 | Correção de bug |
docs |
📚 | Documentação |
style |
🎨 | Formatação e estilo |
refactor |
🔧 | Refatoração de código |
test |
🧪 | Testes |
chore |
📦 | Manutenção e tarefas |
perf |
⚡ | Melhorias de performance |
build |
🏗️ | Sistema de build |
O script gera mensagens no formato padrão:
tipo(escopo): descrição
Exemplos:
feat(auth): adiciona sistema de loginfix: corrige erro de validação no formuláriodocs(api): atualiza documentação dos endpoints
show_header(): Exibe cabeçalho do programashow_types(): Lista tipos de commit disponíveisshow_commit_message(): Mostra mensagem geradashow_success(): Feedback de sucessoshow_error(): Feedback de erroshow_cancelled(): Feedback de cancelamentoshow_loading(): Indicador de processamento
get_commit_type(): Converte número em tipo de commitvalidate_commit_type(): Valida escolha do usuáriovalidate_message(): Valida descrição não vaziabuild_commit_message(): Constrói mensagem finalexecute_commit(): Executa comandos gitconfirm_action(): Solicita confirmação do usuário
prompt_commit_type(): Solicita tipo de commitprompt_scope(): Solicita escopo (opcional)prompt_message(): Solicita descriçãoprocess_commit(): Orquestra todo o processomain(): Função principal
# Cores principais
WHITE='\033[1;37m' # Texto principal
LIGHT_BLUE='\033[1;34m' # Bordas e estrutura
LIGHT_CYAN='\033[1;36m' # Labels e prompts
LIGHT_GREEN='\033[1;32m' # Sucesso
LIGHT_RED='\033[1;31m' # Erro
LIGHT_YELLOW='\033[1;33m'# Aviso-
Inicialização
- Limpa tela
- Exibe cabeçalho
- Mostra opções de commit
-
Coleta de Dados
- Solicita tipo de commit (obrigatório)
- Solicita escopo (opcional)
- Solicita descrição (obrigatório)
-
Validação
- Verifica se tipo é válido
- Verifica se descrição não está vazia
- Remove caracteres especiais
-
Confirmação
- Monta mensagem final
- Exibe preview
- Solicita confirmação
-
Execução
git add -A(adiciona todos os arquivos)git commit -m "mensagem"(cria commit)git push(envia para repositório)
- Tipo de commit: Verifica se opção é válida (1-9 ou 0 para sair)
- Descrição: Não permite descrição vazia
- Mudanças: Verifica se há arquivos modificados antes do commit
- Opção inválida: Reexibe menu com mensagem de erro
- Descrição vazia: Solicita nova descrição
- Sem mudanças: Informa que não há nada para commitar
- Erro no git: Exibe mensagem de erro amigável
- Consistência: Todas as mensagens seguem o mesmo padrão
- Rapidez: Processo automatizado em segundos
- Clareza: Interface intuitiva e visual
- Segurança: Confirmação antes de executar
- Histórico legível: Commits padronizados facilitam revisão
- Automação: Possibilita criação de changelogs automáticos
- Rastreabilidade: Fácil identificação de tipos de mudança
- Profissionalismo: Repositório com aparência profissional
Tipo: feat
Escopo: auth
Descrição: adiciona sistema de autenticação JWT
Resultado: feat(auth): adiciona sistema de autenticação JWTTipo: fix
Escopo:
Descrição: corrige erro de validação no formulário de login
Resultado: fix: corrige erro de validação no formulário de loginTipo: docs
Escopo: api
Descrição: atualiza documentação dos endpoints de usuário
Resultado: docs(api): atualiza documentação dos endpoints de usuário- Compatibilidade: Bash (Linux, macOS, Windows com WSL)
- Dependências: Git instalado e configurado
- Interatividade: Interface de linha de comando interativa
- Automação: Processo completo automatizado
- Validação: Múltiplas camadas de validação
- Feedback: Resposta visual imediata
- Conventional Commits: Especificação oficial
- Semantic Versioning: Compatível com versionamento semântico
- Clean Code: Código organizado e legível
- User Experience: Interface intuitiva e amigável
Criado por @edusites para padronização e automação de commits.