# Project Provisioner CLI
Uma ferramenta de linha de comando para automatizar o provisionamento de novos projetos de dados no Azure DevOps e Databricks.
## 🚀 Instalação
```bash
pip install project-provisioner
```
## 📖 Uso Simplificado
### Modo Interativo (Recomendado)
```bash
project-provisioner create-project --interactive
```
### Com Arquivo de Configuração
```bash
# 1. Criar arquivo de configuração
project-provisioner init
# 2. Editar o arquivo project-config.yaml
# 3. Executar provisionamento
project-provisioner create-project --config project-config.yaml
```
### Comando Rápido
```bash
project-provisioner create-project --project-name "meu-projeto" --organization "https://dev.azure.com/minha-org"
```
## 🎯 Principais Melhorias
### ✅ **Antes (Complexo)**
```bash
project-provisioner create-project \
--project-name "my-new-data-project" \
--azure-devops-organization-url "https://dev.azure.com/your_organization" \
--azure-devops-project-name "YourExistingAzureDevOpsProject" \
--azure-devops-pat "YOUR_AZURE_DEVOPS_PAT" \
--azure-devops-username "your_azure_devops_username" \
--resource-group-name "rg-databricks-projects" \
--location "eastus" \
--databricks-workspace-name "dbr-ws-new-project" \
--databricks-sku "premium" \
--databricks-pat "YOUR_DATABRICKS_PAT" \
--scaffold-source-path "/path/to/your/scaffold/template"
```
### ✅ **Agora (Simples)**
```bash
project-provisioner create-project --interactive
```
## 🔧 Funcionalidades
### Modo Interativo
- ✅ Perguntas guiadas para configuração
- ✅ Valores padrão inteligentes
- ✅ Validação automática
- ✅ Interface amigável
### Arquivo de Configuração
- ✅ Template YAML gerado automaticamente
- ✅ Configuração reutilizável
- ✅ Fácil edição e versionamento
### Valores Padrão Inteligentes
- ✅ Nomes gerados automaticamente
- ✅ Região padrão: `brazilsouth`
- ✅ SKU padrão: `premium`
- ✅ Usuário detectado automaticamente
## 📋 Exemplo de Arquivo de Configuração
```yaml
project_name: meu-projeto-dados
azure_devops_organization_url: https://dev.azure.com/sua-organizacao
azure_devops_project_name: DataProjects
azure_devops_pat: SEU_PAT_AQUI
azure_devops_username: seu-usuario
resource_group_name: rg-meu-projeto-dados
location: brazilsouth
databricks_workspace_name: dbr-meu-projeto-dados
databricks_sku: premium
databricks_pat: SEU_DATABRICKS_PAT_AQUI
scaffold_source_path: /caminho/para/seu/scaffold
```
## 🎯 Comandos Disponíveis
```bash
# Inicializar novo projeto com estrutura scaffold
project-provisioner init
# Inicializar apenas arquivo de configuração
project-provisioner init --config-only
# Pular verificação e configuração do Azure CLI
project-provisioner init --skip-azure-cli
# Mostrar informações do Azure CLI
project-provisioner show-azure-info
# Mostrar informações e salvar no arquivo YAML
project-provisioner show-azure-info --save-config
# Criar projeto (modo interativo)
project-provisioner create-project --interactive
# Criar projeto com arquivo de configuração
project-provisioner create-project --config config.yaml
# Criar projeto com parâmetros mínimos
project-provisioner create-project --project-name "meu-projeto"
# Criar projeto usando dados do Azure CLI
project-provisioner create-project --interactive --user-id "user@domain.com"
# Ver ajuda
project-provisioner --help
```
## 🔧 Verificação Automática do Azure CLI
A partir da versão **0.3.0**, o comando `init` inclui verificação e configuração automática do Azure CLI:
### ✅ **O que é verificado automaticamente:**
- 🔍 **Instalação**: Detecta se o Azure CLI está instalado na máquina
- 📦 **Instalação Automática**: Oferece instalar automaticamente se não estiver presente
- 🔐 **Login**: Verifica se o usuário está logado no Azure CLI
- 🌐 **Login Automático**: Oferece fazer login via navegador se necessário
### 🖥️ **Suporte Multi-Plataforma:**
- **macOS**: Instalação via Homebrew ou script oficial
- **Linux**: Detecção automática de distribuição (Ubuntu/Debian, CentOS/RHEL/Fedora)
- **Windows**: Instruções para instalação manual ou via winget
### 📋 **Exemplo de Fluxo Automático:**
```bash
$ project-provisioner init
🚀 Inicializando Novo Projeto
========================================
🔍 Verificando Azure CLI...
❌ Azure CLI não está instalado
Deseja instalar o Azure CLI agora? [Y/n]: y
🔄 Instalando Azure CLI...
📦 Instalando via Homebrew...
✅ Azure CLI instalado com sucesso!
🔐 É necessário fazer login no Azure CLI
Deseja fazer login agora? [Y/n]: y
🔄 Abrindo navegador para login...
✅ Login realizado com sucesso!
📁 Projeto: meu-projeto
📍 Local: /Users/user/meu-projeto
...
```
### ⚙️ **Opções de Controle:**
```bash
# Comportamento padrão (com verificação do Azure CLI)
project-provisioner init
# Pular verificação do Azure CLI (se necessário)
project-provisioner init --skip-azure-cli
# Outros comandos existentes continuam funcionando
project-provisioner init --project-name "meu-projeto" --config-only
```
### 🚨 **Tratamento de Erros:**
- ✅ Continua o processo mesmo se a instalação do Azure CLI falhar
- ✅ Funciona normalmente sem Azure CLI (usando configuração padrão)
- ✅ Mensagens informativas sobre o status e próximos passos
- ✅ Graceful fallback para configuração manual quando necessário
## 🔍 Integração com Azure CLI
A ferramenta agora pode obter automaticamente dados do Azure CLI para preencher configurações:
### ✅ **Dados Obtidos Automaticamente**
- **Azure Account**: Tenant ID, Subscription ID, usuário logado
- **Azure DevOps**: Organização padrão, projetos disponíveis
- **Databricks**: Workspaces existentes, localizações, SKUs
- **Resource Groups**: Grupos de recursos disponíveis
### ✅ **Como Usar**
```bash
# 1. Inicializar novo projeto (NOVO!)
project-provisioner init
# 2. Verificar e salvar dados do Azure CLI (NOVO!)
project-provisioner show-azure-info --save-config
# 3. Criar projeto usando configuração
project-provisioner create-project --config project-config.yaml
# OU modo interativo com dados do Azure CLI
project-provisioner create-project --interactive
# Com usuário específico
project-provisioner create-project --interactive --user-id "user@domain.com"
```
### ✅ **Benefícios**
- ✅ **Scaffold Automático**: Criação de estrutura completa de pastas
- ✅ **Preenchimento Automático**: Dados do Azure CLI salvos no YAML
- ✅ **Fluxo Simplificado**: `init` → `show-azure-info --save-config` → `create-project`
- ✅ Lista de projetos Azure DevOps disponíveis
- ✅ Lista de workspaces Databricks existentes
- ✅ Detecção automática de localização e SKU
- ✅ Validação de permissões e recursos
## 🚀 **Novo Fluxo de Trabalho Simplificado**
### **1. Inicialização do Projeto**
```bash
project-provisioner init
```
**O que faz:**
- Pergunta o nome do projeto interativamente
- Cria estrutura completa de pastas scaffold:
- `src/` (databricks, python, sql)
- `tests/` (unit, integration)
- `config/` (ambientes)
- `docs/`, `scripts/`, `infrastructure/`
- Gera arquivos essenciais (README.md, requirements.txt, .gitignore)
- Tenta obter dados do Azure CLI automaticamente
- Cria arquivo `project-config.yaml` pré-preenchido
### **2. Configuração Automática com Azure CLI**
```bash
project-provisioner show-azure-info --save-config
```
**O que faz:**
- Obtém dados da conta Azure logada
- Lista projetos Azure DevOps disponíveis
- Lista workspaces Databricks existentes
- **Salva tudo automaticamente no project-config.yaml**
- Mostra quais dados ainda precisam ser configurados
### **3. Provisionamento Final**
```bash
project-provisioner create-project --config project-config.yaml
```
**O que faz:**
- Usa configuração pré-preenchida
- Cria repositório no Azure DevOps
- Configura workspace Databricks
- Faz deploy do scaffold criado
### **📋 Exemplo Completo de Uso**
```bash
# 1. Inicializar novo projeto
$ project-provisioner init
🚀 Inicializando Novo Projeto
========================================
Nome do projeto [data-project-amaro]: meu-projeto-analise
📁 Projeto: meu-projeto-analise
📍 Local: /Users/amaro/meu-projeto-analise
🔍 Tentando obter dados do Azure CLI...
✅ Dados do Azure CLI obtidos com sucesso!
✅ Arquivo de configuração criado: project-config.yaml
Deseja criar a estrutura de pastas do projeto scaffold? [Y/n]: Y
📁 Criando estrutura do projeto em: /Users/amaro/meu-projeto-analise
✅ src/
✅ src/databricks/
✅ src/databricks/notebooks/
✅ src/python/
✅ tests/
✅ config/
✅ docs/
✅ infrastructure/terraform/
... (estrutura completa criada)
🎉 Projeto 'meu-projeto-analise' inicializado com sucesso!
# 2. Verificar e salvar dados do Azure
$ project-provisioner show-azure-info --save-config
🔍 Informações do Azure CLI
========================================
✅ Dados do Azure CLI obtidos com sucesso!
Tenant ID: 37cd273a-1cec-4aae-a297-41480ea54f8d
Organização DevOps: arcelormittal-corp
Projetos disponíveis: 3
✅ Configuração salva em: project-config.yaml
📝 Dados preenchidos automaticamente:
- Localização: brazilsouth
- Usuário: amaro
- Organização Azure DevOps: https://dev.azure.com/arcelormittal-corp
🔑 Ainda é necessário configurar:
- Personal Access Token do Azure DevOps
- Personal Access Token do Databricks
# 3. Editar tokens no arquivo YAML
$ nano project-config.yaml # Adicionar PATs
# 4. Executar provisionamento
$ project-provisioner create-project --config project-config.yaml
🔧 Provisionando projeto: meu-projeto-analise
📦 Criando repositório no Azure DevOps...
📊 Configurando workspace Databricks...
✅ Provisionamento concluído com sucesso!
```
## 🔐 Variáveis de Ambiente
Os PATs podem ser fornecidos via variáveis de ambiente:
- `AZURE_DEVOPS_PAT` - Personal Access Token do Azure DevOps
- `DATABRICKS_PAT` - Personal Access Token do Databricks
## 🧪 Testes
### Execução Rápida
```bash
# Executar todos os testes
./run_tests.sh
# Ou executar manualmente
pytest tests/ -v
```
### Executar Testes Específicos
```bash
# Instalar dependências de desenvolvimento
pip install -e ".[dev]"
# Executar todos os testes
pytest
# Executar testes com cobertura
pytest --cov=project_provisioner --cov-report=term-missing
# Executar testes específicos
pytest tests/test_cli.py
pytest tests/test_core.py
pytest tests/test_config.py
# Executar testes com relatório HTML
pytest --cov=project_provisioner --cov-report=html
```
### Qualidade do Código
```bash
# Formatação automática
black project_provisioner/ tests/
# Verificação de estilo
flake8 project_provisioner/ tests/
# Verificação de tipos
mypy project_provisioner/
```
### Estrutura de Testes
```
tests/
├── __init__.py
├── conftest.py # Configurações e fixtures do pytest
├── test_cli.py # Testes do CLI (36 testes)
├── test_core.py # Testes da lógica principal (6 testes)
└── test_config.py # Testes de configuração (16 testes)
```
### Cobertura de Testes
- **Total**: 82% de cobertura
- **CLI**: 75% de cobertura
- **Core**: 97% de cobertura
- **36 testes** executando com sucesso
### Tipos de Testes
- ✅ **Testes Unitários**: Funções individuais
- ✅ **Testes de Integração**: Fluxos completos
- ✅ **Testes de Configuração**: Validação de YAML
- ✅ **Testes de CLI**: Comandos e opções
- ✅ **Testes de Mock**: Simulação de dependências externas
## 📝 Próximos Passos
Após o provisionamento:
1. Navegue para o diretório do projeto: `cd nome-do-projeto`
2. Configure seu ambiente de desenvolvimento
3. Comece a desenvolver!
## 🤝 Contribuição
Para contribuir com melhorias:
1. **Fork o projeto**
2. **Crie uma branch para sua feature**
```bash
git checkout -b feature/nova-funcionalidade
```
3. **Commit suas mudanças**
```bash
git commit -m "Adiciona nova funcionalidade"
```
4. **Push para a branch**
```bash
git push origin feature/nova-funcionalidade
```
5. **Abra um Pull Request**
### Diretrizes de Contribuição
- ✅ Escreva testes para novas funcionalidades
- ✅ Mantenha a compatibilidade com versões anteriores
- ✅ Documente mudanças no README
- ✅ Siga o padrão de código existente
- ✅ Execute `./run_tests.sh` antes de submeter
### Desenvolvimento Local
```bash
# Clone o repositório
git clone https://github.com/joseamaro/project-provisioner.git
cd project-provisioner
# Instale em modo desenvolvimento
pip install -e ".[dev]"
# Execute os testes
./run_tests.sh
# Faça suas alterações e teste novamente
pytest tests/ -v
```
## 📊 Status do Projeto
- **Versão**: 0.3.0
- **Status**: Alpha
- **Python**: >=3.8
- **Dependências**: click, PyYAML
- **Cobertura de Testes**: 82%
- **Testes**: 36 testes passando
- **Nova Funcionalidade**: Verificação e instalação automática do Azure CLI
## 🐛 Reportar Bugs
Se encontrar algum problema:
1. Verifique se não foi reportado antes
2. Crie uma issue com:
- Descrição detalhada do problema
- Passos para reproduzir
- Versão do Python e sistema operacional
- Logs de erro (se aplicável)
## 📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.
Raw data
{
"_id": null,
"home_page": "https://github.com/joseamaro/project-provisioner",
"name": "project-provisioner",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "databricks azure devops cli automation azure-cli",
"author": "Jose Amaro",
"author_email": "jose.amarodev@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/75/b6/165a2c3a7804cead69c45c6742f57b03030bab914155120f4f309e9e57e4/project_provisioner-0.3.0.tar.gz",
"platform": null,
"description": "# Project Provisioner CLI\n\nUma ferramenta de linha de comando para automatizar o provisionamento de novos projetos de dados no Azure DevOps e Databricks.\n\n## \ud83d\ude80 Instala\u00e7\u00e3o\n\n```bash\npip install project-provisioner\n```\n\n## \ud83d\udcd6 Uso Simplificado\n\n### Modo Interativo (Recomendado)\n```bash\nproject-provisioner create-project --interactive\n```\n\n### Com Arquivo de Configura\u00e7\u00e3o\n```bash\n# 1. Criar arquivo de configura\u00e7\u00e3o\nproject-provisioner init\n\n# 2. Editar o arquivo project-config.yaml\n\n# 3. Executar provisionamento\nproject-provisioner create-project --config project-config.yaml\n```\n\n### Comando R\u00e1pido\n```bash\nproject-provisioner create-project --project-name \"meu-projeto\" --organization \"https://dev.azure.com/minha-org\"\n```\n\n## \ud83c\udfaf Principais Melhorias\n\n### \u2705 **Antes (Complexo)**\n```bash\nproject-provisioner create-project \\\n --project-name \"my-new-data-project\" \\\n --azure-devops-organization-url \"https://dev.azure.com/your_organization\" \\\n --azure-devops-project-name \"YourExistingAzureDevOpsProject\" \\\n --azure-devops-pat \"YOUR_AZURE_DEVOPS_PAT\" \\\n --azure-devops-username \"your_azure_devops_username\" \\\n --resource-group-name \"rg-databricks-projects\" \\\n --location \"eastus\" \\\n --databricks-workspace-name \"dbr-ws-new-project\" \\\n --databricks-sku \"premium\" \\\n --databricks-pat \"YOUR_DATABRICKS_PAT\" \\\n --scaffold-source-path \"/path/to/your/scaffold/template\"\n```\n\n### \u2705 **Agora (Simples)**\n```bash\nproject-provisioner create-project --interactive\n```\n\n## \ud83d\udd27 Funcionalidades\n\n### Modo Interativo\n- \u2705 Perguntas guiadas para configura\u00e7\u00e3o\n- \u2705 Valores padr\u00e3o inteligentes\n- \u2705 Valida\u00e7\u00e3o autom\u00e1tica\n- \u2705 Interface amig\u00e1vel\n\n### Arquivo de Configura\u00e7\u00e3o\n- \u2705 Template YAML gerado automaticamente\n- \u2705 Configura\u00e7\u00e3o reutiliz\u00e1vel\n- \u2705 F\u00e1cil edi\u00e7\u00e3o e versionamento\n\n### Valores Padr\u00e3o Inteligentes\n- \u2705 Nomes gerados automaticamente\n- \u2705 Regi\u00e3o padr\u00e3o: `brazilsouth`\n- \u2705 SKU padr\u00e3o: `premium`\n- \u2705 Usu\u00e1rio detectado automaticamente\n\n## \ud83d\udccb Exemplo de Arquivo de Configura\u00e7\u00e3o\n\n```yaml\nproject_name: meu-projeto-dados\nazure_devops_organization_url: https://dev.azure.com/sua-organizacao\nazure_devops_project_name: DataProjects\nazure_devops_pat: SEU_PAT_AQUI\nazure_devops_username: seu-usuario\nresource_group_name: rg-meu-projeto-dados\nlocation: brazilsouth\ndatabricks_workspace_name: dbr-meu-projeto-dados\ndatabricks_sku: premium\ndatabricks_pat: SEU_DATABRICKS_PAT_AQUI\nscaffold_source_path: /caminho/para/seu/scaffold\n```\n\n## \ud83c\udfaf Comandos Dispon\u00edveis\n\n```bash\n# Inicializar novo projeto com estrutura scaffold\nproject-provisioner init\n\n# Inicializar apenas arquivo de configura\u00e7\u00e3o \nproject-provisioner init --config-only\n\n# Pular verifica\u00e7\u00e3o e configura\u00e7\u00e3o do Azure CLI\nproject-provisioner init --skip-azure-cli\n\n# Mostrar informa\u00e7\u00f5es do Azure CLI\nproject-provisioner show-azure-info\n\n# Mostrar informa\u00e7\u00f5es e salvar no arquivo YAML\nproject-provisioner show-azure-info --save-config\n\n# Criar projeto (modo interativo)\nproject-provisioner create-project --interactive\n\n# Criar projeto com arquivo de configura\u00e7\u00e3o\nproject-provisioner create-project --config config.yaml\n\n# Criar projeto com par\u00e2metros m\u00ednimos\nproject-provisioner create-project --project-name \"meu-projeto\"\n\n# Criar projeto usando dados do Azure CLI\nproject-provisioner create-project --interactive --user-id \"user@domain.com\"\n\n# Ver ajuda\nproject-provisioner --help\n```\n\n## \ud83d\udd27 Verifica\u00e7\u00e3o Autom\u00e1tica do Azure CLI\n\nA partir da vers\u00e3o **0.3.0**, o comando `init` inclui verifica\u00e7\u00e3o e configura\u00e7\u00e3o autom\u00e1tica do Azure CLI:\n\n### \u2705 **O que \u00e9 verificado automaticamente:**\n- \ud83d\udd0d **Instala\u00e7\u00e3o**: Detecta se o Azure CLI est\u00e1 instalado na m\u00e1quina\n- \ud83d\udce6 **Instala\u00e7\u00e3o Autom\u00e1tica**: Oferece instalar automaticamente se n\u00e3o estiver presente\n- \ud83d\udd10 **Login**: Verifica se o usu\u00e1rio est\u00e1 logado no Azure CLI\n- \ud83c\udf10 **Login Autom\u00e1tico**: Oferece fazer login via navegador se necess\u00e1rio\n\n### \ud83d\udda5\ufe0f **Suporte Multi-Plataforma:**\n- **macOS**: Instala\u00e7\u00e3o via Homebrew ou script oficial\n- **Linux**: Detec\u00e7\u00e3o autom\u00e1tica de distribui\u00e7\u00e3o (Ubuntu/Debian, CentOS/RHEL/Fedora)\n- **Windows**: Instru\u00e7\u00f5es para instala\u00e7\u00e3o manual ou via winget\n\n### \ud83d\udccb **Exemplo de Fluxo Autom\u00e1tico:**\n```bash\n$ project-provisioner init\n\n\ud83d\ude80 Inicializando Novo Projeto\n========================================\n\n\ud83d\udd0d Verificando Azure CLI...\n\u274c Azure CLI n\u00e3o est\u00e1 instalado\nDeseja instalar o Azure CLI agora? [Y/n]: y\n\n\ud83d\udd04 Instalando Azure CLI...\n\ud83d\udce6 Instalando via Homebrew...\n\u2705 Azure CLI instalado com sucesso!\n\n\ud83d\udd10 \u00c9 necess\u00e1rio fazer login no Azure CLI\nDeseja fazer login agora? [Y/n]: y\n\ud83d\udd04 Abrindo navegador para login...\n\u2705 Login realizado com sucesso!\n\n\ud83d\udcc1 Projeto: meu-projeto\n\ud83d\udccd Local: /Users/user/meu-projeto\n...\n```\n\n### \u2699\ufe0f **Op\u00e7\u00f5es de Controle:**\n```bash\n# Comportamento padr\u00e3o (com verifica\u00e7\u00e3o do Azure CLI)\nproject-provisioner init\n\n# Pular verifica\u00e7\u00e3o do Azure CLI (se necess\u00e1rio)\nproject-provisioner init --skip-azure-cli\n\n# Outros comandos existentes continuam funcionando\nproject-provisioner init --project-name \"meu-projeto\" --config-only\n```\n\n### \ud83d\udea8 **Tratamento de Erros:**\n- \u2705 Continua o processo mesmo se a instala\u00e7\u00e3o do Azure CLI falhar\n- \u2705 Funciona normalmente sem Azure CLI (usando configura\u00e7\u00e3o padr\u00e3o)\n- \u2705 Mensagens informativas sobre o status e pr\u00f3ximos passos\n- \u2705 Graceful fallback para configura\u00e7\u00e3o manual quando necess\u00e1rio\n\n## \ud83d\udd0d Integra\u00e7\u00e3o com Azure CLI\n\nA ferramenta agora pode obter automaticamente dados do Azure CLI para preencher configura\u00e7\u00f5es:\n\n### \u2705 **Dados Obtidos Automaticamente**\n- **Azure Account**: Tenant ID, Subscription ID, usu\u00e1rio logado\n- **Azure DevOps**: Organiza\u00e7\u00e3o padr\u00e3o, projetos dispon\u00edveis\n- **Databricks**: Workspaces existentes, localiza\u00e7\u00f5es, SKUs\n- **Resource Groups**: Grupos de recursos dispon\u00edveis\n\n### \u2705 **Como Usar**\n```bash\n# 1. Inicializar novo projeto (NOVO!)\nproject-provisioner init\n\n# 2. Verificar e salvar dados do Azure CLI (NOVO!)\nproject-provisioner show-azure-info --save-config\n\n# 3. Criar projeto usando configura\u00e7\u00e3o\nproject-provisioner create-project --config project-config.yaml\n\n# OU modo interativo com dados do Azure CLI\nproject-provisioner create-project --interactive\n\n# Com usu\u00e1rio espec\u00edfico\nproject-provisioner create-project --interactive --user-id \"user@domain.com\"\n```\n\n### \u2705 **Benef\u00edcios**\n- \u2705 **Scaffold Autom\u00e1tico**: Cria\u00e7\u00e3o de estrutura completa de pastas\n- \u2705 **Preenchimento Autom\u00e1tico**: Dados do Azure CLI salvos no YAML\n- \u2705 **Fluxo Simplificado**: `init` \u2192 `show-azure-info --save-config` \u2192 `create-project`\n- \u2705 Lista de projetos Azure DevOps dispon\u00edveis\n- \u2705 Lista de workspaces Databricks existentes\n- \u2705 Detec\u00e7\u00e3o autom\u00e1tica de localiza\u00e7\u00e3o e SKU\n- \u2705 Valida\u00e7\u00e3o de permiss\u00f5es e recursos\n\n## \ud83d\ude80 **Novo Fluxo de Trabalho Simplificado**\n\n### **1. Inicializa\u00e7\u00e3o do Projeto**\n```bash\nproject-provisioner init\n```\n**O que faz:**\n- Pergunta o nome do projeto interativamente\n- Cria estrutura completa de pastas scaffold:\n - `src/` (databricks, python, sql)\n - `tests/` (unit, integration)\n - `config/` (ambientes)\n - `docs/`, `scripts/`, `infrastructure/`\n- Gera arquivos essenciais (README.md, requirements.txt, .gitignore)\n- Tenta obter dados do Azure CLI automaticamente\n- Cria arquivo `project-config.yaml` pr\u00e9-preenchido\n\n### **2. Configura\u00e7\u00e3o Autom\u00e1tica com Azure CLI**\n```bash\nproject-provisioner show-azure-info --save-config\n```\n**O que faz:**\n- Obt\u00e9m dados da conta Azure logada\n- Lista projetos Azure DevOps dispon\u00edveis\n- Lista workspaces Databricks existentes\n- **Salva tudo automaticamente no project-config.yaml**\n- Mostra quais dados ainda precisam ser configurados\n\n### **3. Provisionamento Final**\n```bash\nproject-provisioner create-project --config project-config.yaml\n```\n**O que faz:**\n- Usa configura\u00e7\u00e3o pr\u00e9-preenchida\n- Cria reposit\u00f3rio no Azure DevOps\n- Configura workspace Databricks\n- Faz deploy do scaffold criado\n\n### **\ud83d\udccb Exemplo Completo de Uso**\n```bash\n# 1. Inicializar novo projeto\n$ project-provisioner init\n\ud83d\ude80 Inicializando Novo Projeto\n========================================\nNome do projeto [data-project-amaro]: meu-projeto-analise\n\n\ud83d\udcc1 Projeto: meu-projeto-analise\n\ud83d\udccd Local: /Users/amaro/meu-projeto-analise\n\n\ud83d\udd0d Tentando obter dados do Azure CLI...\n\u2705 Dados do Azure CLI obtidos com sucesso!\n\u2705 Arquivo de configura\u00e7\u00e3o criado: project-config.yaml\n\nDeseja criar a estrutura de pastas do projeto scaffold? [Y/n]: Y\n\ud83d\udcc1 Criando estrutura do projeto em: /Users/amaro/meu-projeto-analise\n \u2705 src/\n \u2705 src/databricks/\n \u2705 src/databricks/notebooks/\n \u2705 src/python/\n \u2705 tests/\n \u2705 config/\n \u2705 docs/\n \u2705 infrastructure/terraform/\n ... (estrutura completa criada)\n\n\ud83c\udf89 Projeto 'meu-projeto-analise' inicializado com sucesso!\n\n# 2. Verificar e salvar dados do Azure\n$ project-provisioner show-azure-info --save-config\n\ud83d\udd0d Informa\u00e7\u00f5es do Azure CLI\n========================================\n\u2705 Dados do Azure CLI obtidos com sucesso!\n Tenant ID: 37cd273a-1cec-4aae-a297-41480ea54f8d\n Organiza\u00e7\u00e3o DevOps: arcelormittal-corp\n Projetos dispon\u00edveis: 3\n\n\u2705 Configura\u00e7\u00e3o salva em: project-config.yaml\n\ud83d\udcdd Dados preenchidos automaticamente:\n - Localiza\u00e7\u00e3o: brazilsouth\n - Usu\u00e1rio: amaro\n - Organiza\u00e7\u00e3o Azure DevOps: https://dev.azure.com/arcelormittal-corp\n\n\ud83d\udd11 Ainda \u00e9 necess\u00e1rio configurar:\n - Personal Access Token do Azure DevOps\n - Personal Access Token do Databricks\n\n# 3. Editar tokens no arquivo YAML\n$ nano project-config.yaml # Adicionar PATs\n\n# 4. Executar provisionamento\n$ project-provisioner create-project --config project-config.yaml\n\ud83d\udd27 Provisionando projeto: meu-projeto-analise\n\ud83d\udce6 Criando reposit\u00f3rio no Azure DevOps...\n\ud83d\udcca Configurando workspace Databricks...\n\u2705 Provisionamento conclu\u00eddo com sucesso!\n```\n\n## \ud83d\udd10 Vari\u00e1veis de Ambiente\n\nOs PATs podem ser fornecidos via vari\u00e1veis de ambiente:\n- `AZURE_DEVOPS_PAT` - Personal Access Token do Azure DevOps\n- `DATABRICKS_PAT` - Personal Access Token do Databricks\n\n## \ud83e\uddea Testes\n\n### Execu\u00e7\u00e3o R\u00e1pida\n```bash\n# Executar todos os testes\n./run_tests.sh\n\n# Ou executar manualmente\npytest tests/ -v\n```\n\n### Executar Testes Espec\u00edficos\n```bash\n# Instalar depend\u00eancias de desenvolvimento\npip install -e \".[dev]\"\n\n# Executar todos os testes\npytest\n\n# Executar testes com cobertura\npytest --cov=project_provisioner --cov-report=term-missing\n\n# Executar testes espec\u00edficos\npytest tests/test_cli.py\npytest tests/test_core.py\npytest tests/test_config.py\n\n# Executar testes com relat\u00f3rio HTML\npytest --cov=project_provisioner --cov-report=html\n```\n\n### Qualidade do C\u00f3digo\n```bash\n# Formata\u00e7\u00e3o autom\u00e1tica\nblack project_provisioner/ tests/\n\n# Verifica\u00e7\u00e3o de estilo\nflake8 project_provisioner/ tests/\n\n# Verifica\u00e7\u00e3o de tipos\nmypy project_provisioner/\n```\n\n### Estrutura de Testes\n```\ntests/\n\u251c\u2500\u2500 __init__.py\n\u251c\u2500\u2500 conftest.py # Configura\u00e7\u00f5es e fixtures do pytest\n\u251c\u2500\u2500 test_cli.py # Testes do CLI (36 testes)\n\u251c\u2500\u2500 test_core.py # Testes da l\u00f3gica principal (6 testes)\n\u2514\u2500\u2500 test_config.py # Testes de configura\u00e7\u00e3o (16 testes)\n```\n\n### Cobertura de Testes\n- **Total**: 82% de cobertura\n- **CLI**: 75% de cobertura\n- **Core**: 97% de cobertura\n- **36 testes** executando com sucesso\n\n### Tipos de Testes\n- \u2705 **Testes Unit\u00e1rios**: Fun\u00e7\u00f5es individuais\n- \u2705 **Testes de Integra\u00e7\u00e3o**: Fluxos completos\n- \u2705 **Testes de Configura\u00e7\u00e3o**: Valida\u00e7\u00e3o de YAML\n- \u2705 **Testes de CLI**: Comandos e op\u00e7\u00f5es\n- \u2705 **Testes de Mock**: Simula\u00e7\u00e3o de depend\u00eancias externas\n\n## \ud83d\udcdd Pr\u00f3ximos Passos\n\nAp\u00f3s o provisionamento:\n1. Navegue para o diret\u00f3rio do projeto: `cd nome-do-projeto`\n2. Configure seu ambiente de desenvolvimento\n3. Comece a desenvolver!\n\n## \ud83e\udd1d Contribui\u00e7\u00e3o\n\nPara contribuir com melhorias:\n\n1. **Fork o projeto**\n2. **Crie uma branch para sua feature**\n ```bash\n git checkout -b feature/nova-funcionalidade\n ```\n3. **Commit suas mudan\u00e7as**\n ```bash\n git commit -m \"Adiciona nova funcionalidade\"\n ```\n4. **Push para a branch**\n ```bash\n git push origin feature/nova-funcionalidade\n ```\n5. **Abra um Pull Request**\n\n### Diretrizes de Contribui\u00e7\u00e3o\n\n- \u2705 Escreva testes para novas funcionalidades\n- \u2705 Mantenha a compatibilidade com vers\u00f5es anteriores\n- \u2705 Documente mudan\u00e7as no README\n- \u2705 Siga o padr\u00e3o de c\u00f3digo existente\n- \u2705 Execute `./run_tests.sh` antes de submeter\n\n### Desenvolvimento Local\n\n```bash\n# Clone o reposit\u00f3rio\ngit clone https://github.com/joseamaro/project-provisioner.git\ncd project-provisioner\n\n# Instale em modo desenvolvimento\npip install -e \".[dev]\"\n\n# Execute os testes\n./run_tests.sh\n\n# Fa\u00e7a suas altera\u00e7\u00f5es e teste novamente\npytest tests/ -v\n```\n\n## \ud83d\udcca Status do Projeto\n\n- **Vers\u00e3o**: 0.3.0\n- **Status**: Alpha\n- **Python**: >=3.8\n- **Depend\u00eancias**: click, PyYAML\n- **Cobertura de Testes**: 82%\n- **Testes**: 36 testes passando\n- **Nova Funcionalidade**: Verifica\u00e7\u00e3o e instala\u00e7\u00e3o autom\u00e1tica do Azure CLI\n\n## \ud83d\udc1b Reportar Bugs\n\nSe encontrar algum problema:\n\n1. Verifique se n\u00e3o foi reportado antes\n2. Crie uma issue com:\n - Descri\u00e7\u00e3o detalhada do problema\n - Passos para reproduzir\n - Vers\u00e3o do Python e sistema operacional\n - Logs de erro (se aplic\u00e1vel)\n\n## \ud83d\udcc4 Licen\u00e7a\n\nEste projeto est\u00e1 licenciado sob a Licen\u00e7a MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Uma ferramenta CLI para provisionar automaticamente novos projetos de dados no Azure DevOps e Databricks com integra\u00e7\u00e3o completa ao Azure CLI.",
"version": "0.3.0",
"project_urls": {
"Bug Reports": "https://github.com/joseamaro/project-provisioner/issues",
"Homepage": "https://github.com/joseamaro/project-provisioner",
"Source": "https://github.com/joseamaro/project-provisioner"
},
"split_keywords": [
"databricks",
"azure",
"devops",
"cli",
"automation",
"azure-cli"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9fee4bc3a006231fd248737bdbfd215f99230283c818baec63f36580583c60e8",
"md5": "3a0271d160018caf4c417bfd1a46704f",
"sha256": "0e8b8c1c1bc36235b0c8063aca0af62c4c7406e815d4a11a726580fa17fa6f95"
},
"downloads": -1,
"filename": "project_provisioner-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3a0271d160018caf4c417bfd1a46704f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 37879,
"upload_time": "2025-08-09T06:11:26",
"upload_time_iso_8601": "2025-08-09T06:11:26.007185Z",
"url": "https://files.pythonhosted.org/packages/9f/ee/4bc3a006231fd248737bdbfd215f99230283c818baec63f36580583c60e8/project_provisioner-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "75b6165a2c3a7804cead69c45c6742f57b03030bab914155120f4f309e9e57e4",
"md5": "ebaa26c20245f2840c35ae3d58ed7b05",
"sha256": "e4d592981a61599df09048420112a21848b1d234ffe34e8158d72dfe64b85901"
},
"downloads": -1,
"filename": "project_provisioner-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "ebaa26c20245f2840c35ae3d58ed7b05",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 38942,
"upload_time": "2025-08-09T06:11:28",
"upload_time_iso_8601": "2025-08-09T06:11:28.170966Z",
"url": "https://files.pythonhosted.org/packages/75/b6/165a2c3a7804cead69c45c6742f57b03030bab914155120f4f309e9e57e4/project_provisioner-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-09 06:11:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "joseamaro",
"github_project": "project-provisioner",
"github_not_found": true,
"lcname": "project-provisioner"
}