- Nome da Aplicação: A aplicação se chamará
gPush
. - Tecnologias: A aplicação será escrita em Go, utilizando as bibliotecas Cobra e Bubbletea.
- Identificação do Repositório Original: Ao ser executada, a aplicação deverá identificar o repositório remoto já definido no projeto (
originalRepo
). - Menu Inicial: A aplicação apresentará um menu inicial com as seguintes opções:
- Fazer um
git pull --no-ff
dooriginalRepo
. - Fazer um
commit
com uma mensagem definida pelo usuário. - Fazer um
git push
para ambos os repositórios (originalRepo
e repositório de backup). - Acessar as configurações (
settings
), que incluirão as seguintes opções:- Definir ou editar o repositório de backup.
- Definir ou editar o
originalRepo
. - Gerenciar credenciais (login, senha, ssh, etc).
- Fazer um
- Testes: Incluir testes unitários e de integração para garantir a correta funcionalidade da aplicação.
- Documentação: Criar uma documentação detalhada, incluindo comentários no código e um README completo.
- Logging e Debugging: Adicionar funcionalidades de logging para auxiliar na depuração e entendimento do funcionamento da aplicação.
- Suporte a Múltiplos Repositórios: Expandir a aplicação para suportar o gerenciamento de múltiplos repositórios de backup.
- Autenticação de Dois Fatores: Adicionar suporte para autenticação de dois fatores, se estiver lidando com credenciais de usuário.
- Integração com Outras Ferramentas de Desenvolvimento: Considerar a integração com outras ferramentas de desenvolvimento, como IDEs.
- Atualizações Automáticas: Adicionar uma funcionalidade que verifica se há atualizações para a CLI e oferece ao usuário a opção de instalá-las.
- Internacionalização: Adicionar suporte para múltiplos idiomas, se a aplicação for disponibilizada para usuários de diferentes países.
- Suporte a Diferentes Sistemas de Controle de Versão: Adicionar suporte para outros sistemas de controle de versão além do Git.
- Interface Gráfica do Usuário (GUI): Considerar a adição de uma GUI para tornar a aplicação mais acessível para usuários que preferem essa interface.