Uma CLI em Python puro para interagir com Variable Groups do Azure DevOps.
- 🔍 Pesquisar: encontra variáveis cujo valor contém um termo informado.
- 📥 Baixar: exporta todas as variáveis de um Variable Group (lib) para um arquivo
.env
. - 📂 Listar: exibe os grupos (libs) disponíveis por projeto/ambiente, sem variáveis.
- 🔀 Comparar: compara duas libs e mostra as variáveis exclusivas de cada uma.
- Python 3.8+
- Azure CLI (
az
) instalada - Autenticação ativa:
az login
Se necessário, instale a extensão do DevOps:
az extension add --name azure-devops
Você pode rodar direto o arquivo capi-cli.py
, mas se preferir instalar globalmente:
make instalar
chmod +x capi-cli.py
sudo cp capi-cli.py /usr/local/bin/capi-cli
Copy-Item .\capi-cli.py "C:\Windows\System32\capi-cli.py"
python C:\Windows\System32\capi-cli.py ...
capi-cli pesquisar \
--organizacao=https://dev.azure.com/minha-org \
--termo=https://my-api \
--projeto=TEST --ambiente=QAS \
--salvar=resultado.txt --out
capi-cli baixar \
--organizacao=https://dev.azure.com/minha-org \
--projeto=TEST \
--lib=Meu-App.QAS \
--ambiente=QAS \
--salvar=.env --out
capi-cli listar \
--organizacao=https://dev.azure.com/minha-org \
--projeto=BOARD --ambiente=DEV \
--salvar=grupos.txt --out
capi-cli comparar \
--organizacao=https://dev.azure.com/minha-org \
--projeto=BOARD \
--lib Meu-App.Backend.DEV \
--lib Meu-App.Backend.QAS \
--out
Saída de exemplo:
------ DEV -------
+ HOST=localhost:300 (Existe em DEV mas não existe em QAS)
------ QAS -------
+ PORT=3000 (Existe em QAS mas não existe em DEV)
------------------
Parâmetro | Obrigatório | Descrição |
---|---|---|
--organizacao |
✅ | URL da organização (ex.: https://dev.azure.com/minha-org ) |
--termo |
✅ | Termo a ser buscado nos valores |
--projeto |
❌ | Filtro por nome/substring de projeto |
--ambiente |
❌ | Filtra pelo nome do grupo (ex.: DEV , QAS , etc.) |
--ignore-case |
❌ | Busca sem diferenciar maiúsculas/minúsculas |
--salvar |
❌ | Salvar saída em arquivo texto |
--out |
❌ | Exibir resultados no terminal |
Parâmetro | Obrigatório | Descrição |
---|---|---|
--organizacao |
✅ | URL da organização |
--projeto |
✅ | Nome/substring do projeto |
--lib |
✅ | Nome do Variable Group (match exato ou substring) |
--ambiente |
❌ | Filtra pelo nome do grupo contendo o ambiente |
--salvar |
❌ | Caminho do arquivo .env |
--out |
❌ | Exibir .env no terminal |
Parâmetro | Obrigatório | Descrição |
---|---|---|
--organizacao |
✅ | URL da organização |
--projeto |
❌ | Nome/substring do projeto |
--ambiente |
❌ | Filtra pelo nome do grupo contendo o ambiente |
--salvar |
❌ | Caminho do arquivo texto |
--out |
❌ | Exibir lista no terminal |
A saída lista apenas
Projeto
,Grupo
,Criado por
eModificado por
, sem variáveis.
Parâmetro | Obrigatório | Descrição |
---|---|---|
--organizacao |
✅ | URL da organização |
--projeto |
❌ | Nome/substring do projeto |
--lib |
✅ (×2) | Informe duas vezes: primeira e segunda lib (match exato > substring) |
--ambiente |
❌ | Filtra pelo nome do grupo contendo o ambiente |
--salvar |
❌ | Caminho do arquivo texto para salvar a comparação |
--out |
❌ | Exibir comparação no terminal |
A comparação mostra as variáveis exclusivas de cada lib. (Opcionalmente, você pode salvar essa saída em um arquivo via
--salvar
.)
-
pesquisar → lista:
projeto | grupo | chave | valor | criado_por | modificado_por
-
listar → lista apenas grupos/libs:
-------------------------------------------------------------------------------- Projeto: NOME_PROJETO Grupo: NOME_DO_GRUPO Criado: Nome <email> Modif.: Nome <email> --------------------------------------------------------------------------------
-
baixar → gera
.env
:KEY=VALUE
🔒 Segredos não são retornados pela Azure CLI — aparecem como
***SECRET***
.
- Spinners discretos (
Listando projetos...
,Analisando grupos...
) - Linha limpa ao final → saída organizada
- Busca é case-sensitive por padrão (use
--ignore-case
para ignorar). - Segredos não podem ser exportados (limitação da Azure CLI).
- Arquitetura limpa (Clean Code & SOLID)
- Fachada
AzureDevOps
, funções puras e separação de responsabilidades - Docstrings + type hints para manutenção simples
- Zero dependências externas além da stdlib do Python
- Exportar para JSON/YAML
- Suporte a múltiplas libs no
baixar
- Mostrar diferenças de valores no
comparar
(quando a variável existe nas duas libs) - Otimizações de performance em grandes organizações
git clone https://github.com/4lessandrodev/capivarinha-cli.git && \
cd capivarinha-cli && \
make instalar && \
cd .. && rm -rf capivarinha-cli
capi-cli --version
Exemplo de saída: v0.1.2