3

Pitch: Criei uma CLI em Shell Script para automatizar o setup completo de repositórios Git/GitHub (autoprojrepo)

Toda vez que eu começava um novo projeto, me pegava repetindo os mesmos passos manuais:

  1. Criar a pasta do projeto.
  2. Rodar git init e configurar a branch principal.
  3. Criar .gitignore, .env.example e arquivos base da stack.
  4. Criar a estrutura de branches (main para prod, stg para homologação, dsv para desenvolvimento).
  5. Abrir o navegador ou rodar o GitHub CLI para criar o repositório remoto.
  6. Fazer push de todas as branches configurando upstream (-u).
  7. Abrir a pasta no editor de código.

Embora não demore horas, é um atrito repetitivo que rouba foco. Para resolver isso e padronizar o ponto de partida de qualquer repositório, escrevi o autoprojrepo.

🛠️ O que a ferramenta faz?

Com um único comando, o script executa todo o fluxo de ponta a ponta:

  • Scaffold por Stack: Gera estrutura inicial pronta com .gitignore adequado para Python, Node.js, n8n, Docker, Go ou Genérico.

  • Commit Raiz Limpo: Cria um commit inicial vazio (--allow-empty) antes de aplicar o scaffold, garantindo uma raiz limpa para futuros rebases e ramificações.

  • Git Flow Imediato: Configura as branches main e stg, faz o checkout para a branch dsv e sobe tudo para o remoto com rastreamento ativo.

  • Integração com GitHub CLI (gh): Detecta a distro Linux (apt, dnf, pacman, zypper, apk) ou macOS (brew) e instala/autentica o gh caso ainda não esteja presente.

  • Handoff Direto: Abre o VS Code diretamente na raiz do projeto ao concluir.

⚡ Instalação e Uso

Para instalar o executável em ~/.local/bin via comando único:

:~$ curl -sSL https://raw.githubusercontent.com/mazinhorj/autoprojrepo/main/install.sh | bash

Para inicializar um projeto:

# Exemplo: criando um projeto Python público
:~$ autoprojrepo api-clientes --template python --public

# Exemplo: inicializando um container Docker apenas local (sem GitHub)
:~$ autoprojrepo microservico-auth -t docker --no-remote

# Atualizar a ferramenta para a versão mais recente
:~$ autoprojrepo --update

🛡️ Cuidados Técnicos no Shell Script

Ao estruturar o script, priorizei algumas boas práticas para evitar dores de cabeça no terminal:

  • Segurança de Execução: Uso de set -euo pipefail para interromper o script imediatamente caso qualquer comando intermediário falhe ou tente ler variáveis não declaradas.
  • Validação Estrita: Passado pelo ShellCheck para garantir compatibilidade e ausência de falhas em expansões de variáveis/Here-Docs.
  • Multi-distro: Tratamento condicional para múltiplos gerenciadores de pacotes sem exigir dependências pesadas (Node/Python) para rodar o CLI.

🤝 Aberto a Contribuições

O projeto é 100% open source sob licença MIT e foi desenhado para ser facilmente expansível.

Se quiserem adicionar novos templates de stacks (Rust, Java/Spring, Flutter, PHP/Laravel, Elixir), suporte a outros editores (Neovim, Zed, Cursor) ou melhorias de compatibilidade, Pull Requests e Issues são super bem-vindos!

🔗 Repositório no GitHub: github.com/mazinhorj/autoprojrepo

Como vocês costumam padronizar o pontapé inicial de novos projetos por aí? Usam scripts próprios, templates de repositório do GitHub ou geradores de cada framework? Feedback e sugestões são muito bem-vindos!

Carregando publicação patrocinada...