Skip to main content

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

PyPI Downloads GitHub Stars Python Platform License Status


🎯 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:

  1. Fork o repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. 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


🙏 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

devenv_manager-0.1.2.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

devenv_manager-0.1.2-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

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

Hashes for devenv_manager-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ef2a795d011c948216932389bfec5ee48e7958763e0c1fefd3e4aa33651ab51b
MD5 5095459099851dd4f0cbb496d9d53555
BLAKE2b-256 6a4ce5ecfbbccd91f648cebff6f661cdaf7382693b3afdaba804970faee62874

See more details on using hashes here.

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

Hashes for devenv_manager-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 737df63f6a058eee240c6ccb19295172e77689d952df7bb9778ed166d171a2ad
MD5 98636c7c3a128fb5cb063169febcd958
BLAKE2b-256 171138b06feaaf8e224016c0255593c23013438523357fe70481364d4e076c1c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page