7

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...
1

Seja bem-vindo ao TabNews, Osmar

Eu às vezes também me incomodo por ter que sempre repetir a mesma sequência de comandos git!

Mas eu aqui uso windows, e meu fluxo de trabalho (por assim dizer) é um pouco diferente.

Eu naveguei nos seus projetos e acessei seu portfolio. Eu vi que você tem experiencia com gestão escolar e gestão em geral. Eu também me interesso bastante por educação, liderança e tecnologia.

1

Olá, Rodrigo.
Bacana você também se interessar por educação. Sempre vivi muito dos dois mundos. Sou da educação como primeira formação. Mas só nos últimos anos voltei a focar 100% em TI. A intenção era fazer uma migração de carreira. Acabei juntando ainda mais os dois mundos kkkkkk.
Eu pouco uso o Windows no meu dia a dia.
Mas se quiser contribuir com a ferramenta, ou até construir uma exclusivamente para o Windows, seria bem bacana.
Obrigado pelo seu comentário.

1
-2

Meus parabéns! Mais um novato que tá reinventando a roda.

Existe um projeto que deve ter uns 7 anos chamado Backstage.io que é exatamente isso, porém com muito mais estrutura e opções e é totalmente open source.

Outro ponto, o Maven tambem faz isso. Inclusive dá pra configurar um ambiente inteiro usando os archtypes do Maven, incluindo até a IDE.

0