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==0.1.1
devm 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==0.1.1
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
devm --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
devm 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
devm 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
devm 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
devm 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
devm 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)
devm 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
devm 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 'devm sync push' to upload environments │
# │ Use 'devm sync pull' to download environments │
# ╰──────────────╯
Enviando Ambientes
# Envie todos os ambientes para o repositório
devm sync push
# Envie apenas um ambiente específico
devm sync push -e "meu-setup-20241201"
# Envie múltiplos ambientes
devm 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
devm 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
devm 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:
devm capture "meu-setup-completo"
devm sync push
# Na máquina nova:
pip install devenv-manager
devm init
devm sync setup git@github.com:seu-usuario/devenv-private.git
devm sync pull
devm restore "meu-setup-completo"
# ☕ 30 minutos depois: ambiente idêntico!
👥 Caso 2: Onboarding de Equipe
# Setup da empresa (feito uma vez pelo tech lead):
devm capture "empresa-dev-env-2024"
devm sync push
# Novo desenvolvedor:
devm sync pull
devm restore "empresa-dev-env-2024"
# 🎉 Ambiente padronizado automaticamente!
🏠 Caso 3: Sincronização Casa/Trabalho
# No trabalho:
devm capture "work-setup"
devm sync push
# Em casa:
devm sync pull
devm restore "work-setup"
# 🔄 Mesmo ambiente em casa!
🔄 Caso 4: Backup/Disaster Recovery
# Backup regular:
devm capture "backup-$(date +%Y%m%d)"
devm sync push
# Depois de problema/formatação:
devm sync pull
devm list # Ver backups disponíveis
devm restore "backup-20241201"
# 🛡️ Ambiente restaurado!
📊 Comandos Disponíveis
Comandos Básicos:
devm init # Inicializar DevEnv Manager
devm capture "nome" # Capturar ambiente atual
devm list # Listar ambientes salvos
devm show "nome" # Mostrar detalhes do ambiente
devm restore "nome" # Restaurar ambiente
devm delete "nome" # Deletar ambiente
devm status # Status do sistema atual
Comandos de Sync:
devm sync setup <repo-url> # Configurar sincronização Git
devm sync push # Enviar todos os ambientes
devm sync push -e "nome" # Enviar ambiente específico
devm sync pull # Baixar ambientes do repositório
devm sync status # Status da sincronização
Comandos Utilitários:
devm export "nome" arquivo.json # Exportar para arquivo
devm import-env arquivo.json # Importar de arquivo
devm diff "env1" "env2" # Comparar ambientes
devm clean # Limpar backups antigos
Opções Úteis:
devm restore "nome" --dry-run # Preview sem aplicar mudanças
devm restore "nome" --force # Pular confirmações
devm 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
devm sync setup git@github.com:seu-usuario/devenv-PRIVATE.git
# ✅ Sempre faça preview primeiro
devm restore "ambiente" --dry-run
# ✅ Backup manual antes de grandes mudanças
cp ~/.bashrc ~/.bashrc.backup-$(date +%s)
# ✅ Revise o que será instalado
devm 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
devm 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
devm 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
devm show "ambiente" # Ver lista de extensões
Logs e Debug:
# Ver status detalhado
devm status
# Verificar arquivos de config
ls -la ~/.devenv/
# Preview antes de aplicar
devm 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.2.tar.gz.
File metadata
- Download URL: devenv_manager-0.1.2.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 |
ef2a795d011c948216932389bfec5ee48e7958763e0c1fefd3e4aa33651ab51b
|
|
| MD5 |
5095459099851dd4f0cbb496d9d53555
|
|
| BLAKE2b-256 |
6a4ce5ecfbbccd91f648cebff6f661cdaf7382693b3afdaba804970faee62874
|
File details
Details for the file devenv_manager-0.1.2-py3-none-any.whl.
File metadata
- Download URL: devenv_manager-0.1.2-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 |
737df63f6a058eee240c6ccb19295172e77689d952df7bb9778ed166d171a2ad
|
|
| MD5 |
98636c7c3a128fb5cb063169febcd958
|
|
| BLAKE2b-256 |
171138b06feaaf8e224016c0255593c23013438523357fe70481364d4e076c1c
|