Development Environment Manager for Linux - Backup, sync and restore your dev environment in minutes
Project description
🚀 DevEnv Manager
Salve, sincronize e restaure ambientes de desenvolvimento completos em minutos
🎯 O Que É?
O DevEnv Manager é uma ferramenta CLI que resolve um dos maiores problemas dos desenvolvedores: reconfigurar ambientes de desenvolvimento do zero.
Em vez de passar dias instalando pacotes, configurando dotfiles e extensões toda vez que você:
- 💻 Compra um laptop novo
- 🔄 Formata o sistema
- 👥 Precisa padronizar a equipe
- 🏠 Quer sincronizar casa/trabalho
Você simplesmente restaura tudo automaticamente!
🆚 DevEnv Manager vs Outras Ferramentas
| DevEnv Manager | Git/GitHub | Docker | Dotfiles Repos | |
|---|---|---|---|---|
| O que gerencia | 🖥️ Ambiente completo | 📝 Código fonte | 📦 Containers isolados | 📄 Apenas configs |
| Instala pacotes | ✅ 271 pacotes APT | ❌ | ❌ | ❌ |
| Configura sistema | ✅ Dotfiles + extensões | ❌ | ❌ | ✅ Só configs |
| Sincronização | ✅ Git bidirecional | ✅ Código apenas | ❌ | ✅ Configs apenas |
| Caso de uso | 🛠️ Setup pessoal completo | 📂 Projetos de código | 🚀 Deploy apps | ⚙️ Configs básicas |
Exemplo Prático:
❌ Situação Atual (2 dias de trabalho):
# Laptop novo/formatado:
sudo apt update && sudo apt install git curl vim... # 271 pacotes manualmente
code --install-extension ms-python.python... # 15+ extensões VS Code
cp dotfiles/.bashrc ~/.bashrc # Configurar terminal
git config --global user.name... # Git configs
# ... centenas de passos manuais
✅ Com DevEnv Manager (30 minutos):
pip install devenv-manager
devenv restore "meu-ambiente-completo"
# ☕ Vai tomar um café - tudo automatizado!
🚀 Instalação
Método 1: Instalação Direta (Recomendado)
# Em desenvolvimento - será disponibilizado no PyPI
pip install devenv-manager
Método 2: Instalação Manual
# Clone o repositório
git clone https://github.com/seu-usuario/devenv-manager.git
cd devenv-manager
# Crie ambiente virtual
python -m venv .venv
source .venv/bin/activate
# Instale as dependências
pip install -e .
# Teste a instalação
devenv --help
Requisitos do Sistema:
- 🐧 Linux (Ubuntu 20.04+, Debian 10+, Arch, Fedora)
- 🐍 Python 3.8+
- 🔑 sudo (para instalação de pacotes)
- 📦 git (para sincronização)
📋 Guia de Uso Completo
1. Primeira Configuração
# Inicialize o DevEnv Manager
devenv init
# ✅ Saída:
# 🚀 DevEnv Manager initialized successfully!
# Config stored in: /home/usuario/.devenv
2. Capturar Seu Ambiente Atual
# Capture tudo que está instalado e configurado
devenv capture "meu-setup-$(date +%Y%m%d)"
# ✅ Saída exemplo:
# 📸 Capturing environment: meu-setup-20241201
# ✓ Detecting system configuration...
#
# ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
# ┃ Component ┃ Count ┃
# ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
# │ APT Packages │ 271 │
# │ Snap Packages │ 26 │
# │ Flatpak Packages │ 3 │
# │ PIP Packages │ 45 │
# │ Dotfiles │ 8 │
# │ VS Code Extensions │ 23 │
# └────────────────────┴───────┘
# ✓ Environment 'meu-setup-20241201' captured successfully!
3. Ver Ambientes Salvos
# Liste todos os ambientes capturados
devenv list
# ✅ Saída exemplo:
# ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Name ┃ Created ┃ File ┃
# ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
# │ meu-setup-20241201 │ 2024-12-01 14:30│ meu-setup-20241201.json │
# │ ambiente-trabalho │ 2024-11-28 09:15│ ambiente-trabalho.json │
# │ setup-completo │ 2024-11-25 16:45│ setup-completo.json │
# └──────────────────────┴─────────────────┴─────────────────────────┘
4. Ver Detalhes de um Ambiente
# Veja o que contém um ambiente específico
devenv show "meu-setup-20241201"
# ✅ Saída exemplo:
# 📋 Environment Details: meu-setup-20241201
#
# ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Property ┃ Value ┃
# ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
# │ Os │ Linux │
# │ Kernel │ 5.15.0-91-generic │
# │ Architecture │ x86_64 │
# │ Python Version │ 3.12.3 │
# │ Shell │ /bin/bash │
# └────────────────────┴─────────────────────────────┘
#
# ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
# ┃ Type ┃ Count ┃
# ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
# │ APT │ 271 │
# │ SNAP │ 26 │
# │ FLATPAK │ 3 │
# │ PIP │ 45 │
# └────────────────────┴───────┘
5. Restaurar um Ambiente
Preview Seguro (Dry Run):
# Veja o que será feito SEM aplicar mudanças
devenv restore "meu-setup-20241201" --dry-run
# ✅ Saída exemplo:
# 🔍 DRY RUN MODE - No changes will be made
# 📦 Restoring packages...
# Would install 45 new APT packages
# Would install: git vim curl nodejs python3-pip code...
# 📝 Would restore 8 dotfiles
# 🔌 Would install 12 new VS Code extensions
# ✓ Dry run completed successfully!
Restauração Real:
# Restaure o ambiente (VAI INSTALAR OS PACOTES)
devenv restore "meu-setup-20241201"
# ✅ Processo interativo:
# 🔄 Restoring environment: meu-setup-20241201
#
# ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
# ┃ Type ┃ Count ┃
# ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
# │ APT │ 45 │
# │ SNAP │ 8 │
# │ PIP │ 12 │
# └────────────────────┴───────┘
#
# ⚠️ This will install 65 packages and may modify your system.
# Do you want to continue? [y/N]: y
#
# 📦 Installing APT packages...
# ✓ APT packages installed successfully
# 📝 Restoring dotfiles...
# Backed up existing .bashrc to .bashrc.devenv-backup
# ✓ Restored .bashrc
# ✓ Restored .vimrc
# 🔌 Installing VS Code extensions...
# ✓ VS Code extensions installed successfully
# ✓ Environment restored successfully!
🔄 Sincronização Git (Multi-máquina)
Setup Inicial (Uma vez)
# Configure sincronização com repositório privado
devenv sync setup git@github.com:seu-usuario/devenv-private.git
# ✅ Saída:
# 🔧 Setting up git sync with git@github.com:seu-usuario/devenv-private.git
#
# ╭─ Sync Ready ─╮
# │ Git sync setup complete! │
# │ │
# │ Repository: git@github.com:seu-usuario/devenv-private.git │
# │ Branch: main │
# │ │
# │ Use 'devenv sync push' to upload environments │
# │ Use 'devenv sync pull' to download environments │
# ╰──────────────╯
Enviando Ambientes
# Envie todos os ambientes para o repositório
devenv sync push
# Envie apenas um ambiente específico
devenv sync push -e "meu-setup-20241201"
# Envie múltiplos ambientes
devenv sync push -e "ambiente1" -e "ambiente2"
# ✅ Saída exemplo:
# 📤 Pushing specific environments: meu-setup-20241201
# ✓ Successfully pushed 1 specific environments
Baixando Ambientes
# Baixe ambientes do repositório
devenv sync pull
# ✅ Saída exemplo:
# 📥 Pulling environments from remote...
# ✓ Imported ambiente-trabalho
# ✓ Imported setup-casa
# ✓ Successfully imported 2 environments
Status da Sincronização
# Veja status do sync
devenv sync status
# ✅ Saída exemplo:
# ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Property ┃ Value ┃
# ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
# │ Status │ ✓ Enabled │
# │ Remote URL │ git@github.com:seu-usuario/devenv-private.git │
# │ Branch │ main │
# │ Uncommitted Changes │ No │
# │ Last Commit │ abc123 - Sync 2 environments │
# └────────────────────┴────────────────────────────────────────────────────┘
💼 Casos de Uso Práticos
🆕 Caso 1: Laptop Novo
# Na máquina antiga:
devenv capture "meu-setup-completo"
devenv sync push
# Na máquina nova:
pip install devenv-manager
devenv init
devenv sync setup git@github.com:seu-usuario/devenv-private.git
devenv sync pull
devenv restore "meu-setup-completo"
# ☕ 30 minutos depois: ambiente idêntico!
👥 Caso 2: Onboarding de Equipe
# Setup da empresa (feito uma vez pelo tech lead):
devenv capture "empresa-dev-env-2024"
devenv sync push
# Novo desenvolvedor:
devenv sync pull
devenv restore "empresa-dev-env-2024"
# 🎉 Ambiente padronizado automaticamente!
🏠 Caso 3: Sincronização Casa/Trabalho
# No trabalho:
devenv capture "work-setup"
devenv sync push
# Em casa:
devenv sync pull
devenv restore "work-setup"
# 🔄 Mesmo ambiente em casa!
🔄 Caso 4: Backup/Disaster Recovery
# Backup regular:
devenv capture "backup-$(date +%Y%m%d)"
devenv sync push
# Depois de problema/formatação:
devenv sync pull
devenv list # Ver backups disponíveis
devenv restore "backup-20241201"
# 🛡️ Ambiente restaurado!
📊 Comandos Disponíveis
Comandos Básicos:
devenv init # Inicializar DevEnv Manager
devenv capture "nome" # Capturar ambiente atual
devenv list # Listar ambientes salvos
devenv show "nome" # Mostrar detalhes do ambiente
devenv restore "nome" # Restaurar ambiente
devenv delete "nome" # Deletar ambiente
devenv status # Status do sistema atual
Comandos de Sync:
devenv sync setup <repo-url> # Configurar sincronização Git
devenv sync push # Enviar todos os ambientes
devenv sync push -e "nome" # Enviar ambiente específico
devenv sync pull # Baixar ambientes do repositório
devenv sync status # Status da sincronização
Comandos Utilitários:
devenv export "nome" arquivo.json # Exportar para arquivo
devenv import-env arquivo.json # Importar de arquivo
devenv diff "env1" "env2" # Comparar ambientes
devenv clean # Limpar backups antigos
Opções Úteis:
devenv restore "nome" --dry-run # Preview sem aplicar mudanças
devenv restore "nome" --force # Pular confirmações
devenv delete "nome" --force # Deletar sem confirmação
🎯 O Que É Capturado
📦 Pacotes do Sistema:
- APT packages (apenas manually installed)
- Snap packages
- Flatpak packages
- PIP packages (globais)
⚙️ Configurações:
- Dotfiles importantes:
.bashrc,.bash_profile,.zshrc,.profile - Configs de ferramentas:
.vimrc,.gitconfig - SSH config:
.ssh/config(opcional, desabilitado por padrão)
🔌 Extensões e Tools:
- VS Code: Todas as extensões instaladas
- System info: OS, kernel, arquitetura, Python version
Exemplo de Snapshot (JSON):
{
"metadata": {
"name": "meu-setup-20241201",
"created_at": "2024-12-01T14:30:00",
"version": "0.1.0"
},
"system_info": {
"os": "Linux",
"kernel": "5.15.0-91-generic",
"architecture": "x86_64",
"python_version": "3.12.3"
},
"packages": {
"apt": ["git", "vim", "curl", "nodejs", "python3-pip"],
"snap": ["code", "discord", "telegram-desktop"],
"pip": ["requests", "flask", "django"]
},
"dotfiles": {
".bashrc": "# Conteúdo do .bashrc...",
".vimrc": "# Configurações do Vim..."
},
"vscode_extensions": [
"ms-python.python",
"ms-vscode.vscode-json"
]
}
🔒 Segurança
✅ Configurações Seguras:
- SSH keys não são capturadas por padrão
- Backups automáticos de arquivos existentes antes de substituir
- Dry-run mode para preview seguro
- Confirmações antes de mudanças importantes
- Repositórios privados recomendados para sync
⚠️ Cuidados Importantes:
- Use repositórios privados para dados sensíveis
- Revise snapshots antes de compartilhar
- Dotfiles podem conter informações pessoais
- Sempre teste com --dry-run primeiro
🛡️ Boas Práticas:
# ✅ Use repositório privado
devenv sync setup git@github.com:seu-usuario/devenv-PRIVATE.git
# ✅ Sempre faça preview primeiro
devenv restore "ambiente" --dry-run
# ✅ Backup manual antes de grandes mudanças
cp ~/.bashrc ~/.bashrc.backup-$(date +%s)
# ✅ Revise o que será instalado
devenv show "ambiente"
🚀 Performance
Tempos Típicos:
- Captura: ~30 segundos (271 pacotes + configs)
- Restore APT: ~15 minutos (271 pacotes)
- Restore Snap: ~5 minutos (26 pacotes)
- Dotfiles: ~1 segundo
- VS Code extensions: ~2 minutos
Tamanhos:
- Snapshot JSON: ~16KB por ambiente
- Repositório sync: ~1MB (10 ambientes)
🐛 Troubleshooting
Problemas Comuns:
"Permission denied" durante restore:
# Certifique-se que tem sudo
sudo echo "teste"
# Execute com confirmação
devenv restore "ambiente" --force
"Git sync failed":
# Verifique se o repositório é privado e você tem acesso
git clone git@github.com:seu-usuario/devenv-private.git
# Reconfigure se necessário
devenv sync setup git@github.com:seu-usuario/devenv-private.git
"VS Code extensions failed":
# Certifique-se que VS Code está instalado
code --version
# Instale manualmente se necessário
devenv show "ambiente" # Ver lista de extensões
Logs e Debug:
# Ver status detalhado
devenv status
# Verificar arquivos de config
ls -la ~/.devenv/
# Preview antes de aplicar
devenv restore "ambiente" --dry-run
🤝 Contribuindo
Contribuições são bem-vindas!
Como Contribuir:
- Fork o repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Áreas que Precisam de Ajuda:
- Suporte a outras distros (CentOS, OpenSUSE)
- Package managers adicionais (brew, chocolatey)
- Testes automatizados
- Documentação
- Interface gráfica
🗺️ Roadmap
v0.2.0 - Segurança (Próximas 4 semanas)
- Encriptação de snapshots
- Lista de pacotes seguros (whitelist)
- Filtro de dados sensíveis
- Verificação de integridade
v0.3.0 - Multi-OS (8 semanas)
- Suporte Windows (WSL)
- Suporte macOS
- Homebrew support
- Chocolatey support
v1.0.0 - GUI e Cloud (12 semanas)
- Interface gráfica (PyQt6)
- Cloud storage (Google Drive, Dropbox)
- Templates da comunidade
- Versão Pro com recursos avançados
📄 Licença
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
👨💻 Autor
Bernardo
- GitHub: @bernardoamorimalvarenga
- Email: amorimbernardogame@gmail.com
🙏 Agradecimentos
- Click - Framework CLI fantástico
- Rich - Interface colorida e bonita
- Git - Sistema de sync robusto
- Comunidade Python - Ferramentas incríveis
⭐ Gostou do Projeto?
Se o DevEnv Manager te ajudou, considere:
- ⭐ Dar uma estrela no GitHub
- 🐛 Reportar bugs ou sugerir melhorias
- 📢 Compartilhar com outros desenvolvedores
- 🤝 Contribuir com código ou documentação
🚀 Pare de reconfigurar ambientes manualmente - automatize com DevEnv Manager! 🚀
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devenv_manager-0.1.1.tar.gz.
File metadata
- Download URL: devenv_manager-0.1.1.tar.gz
- Upload date:
- Size: 27.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ea74eb10a1085f2394510de79f859c4c2c203a85388d2496f2e1113aee027e3
|
|
| MD5 |
e5daa42559b3b3155369cacd82ef7eb1
|
|
| BLAKE2b-256 |
1b6ff6be36005d37d9598a47668797a4377b33bb06d7ba9c31b1159b52ce1e0d
|
File details
Details for the file devenv_manager-0.1.1-py3-none-any.whl.
File metadata
- Download URL: devenv_manager-0.1.1-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77041d700d1fe0947f8dbfe1e9264e3bd0de11e0e5ad62480b9be287a878cba9
|
|
| MD5 |
e8a88a0f34958e697dcc97face91a2a3
|
|
| BLAKE2b-256 |
cdc867ecc5f8c0b299a6e129e3fcc3cb040f4f606bd450c938ea2c9a50ec80a7
|