project-provisioner


Nameproject-provisioner JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/joseamaro/project-provisioner
SummaryUma ferramenta CLI para provisionar automaticamente novos projetos de dados no Azure DevOps e Databricks com integração completa ao Azure CLI.
upload_time2025-08-09 06:11:28
maintainerNone
docs_urlNone
authorJose Amaro
requires_python>=3.8
licenseNone
keywords databricks azure devops cli automation azure-cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.28025s