infracloud/dev-scripts/update_op_wiki.py

73 lines
2.6 KiB
Python

import requests
import json
OP_URL = "https://projetos.rede5.com.br"
OP_API_KEY = "9c704b1c48939f97463fd9d811a9de050317b85224b93694d6e037f0799d37c2"
OP_AUTH = ('apikey', OP_API_KEY)
# Mapeamento Projeto OP -> Repo GitHub
REPO_MAPPING = {
"Q1Agenda": "q1agenda-backend",
"Q1 SITE": "q1site",
"GoHorseJobs": "gohorsejobs",
"PHOTUM": "photum",
"SaveinMed": "saveinmed",
"Q1FIT": "q1fit",
"Zeus": "zeus-suplementos"
}
def update_wiki():
print("--- Atualizando Wiki do OpenProject ---")
# 1. Listar projetos para pegar os IDs
projs_resp = requests.get(f"{OP_URL}/api/v3/projects", auth=OP_AUTH).json()
projects = projs_resp['_embedded']['elements']
for p in projects:
name = p['name']
if name in REPO_MAPPING:
repo = REPO_MAPPING[name]
p_id = p['id']
print(f"Atualizando Wiki de {name} (ID: {p_id})...")
wiki_content = f"""# Documentação do Projeto
Este projeto foi migrado do Monday.com e está vinculado ao repositório GitHub.
## Repositório
* **Nome:** `{repo}`
* **Branch Padrão (Local):** `dev`
* **Localização Local:** `C:\dev\{repo}`
## Acesso
Para clonar manualmente:
```bash
git clone https://github.com/rede5/{repo}.git
git checkout dev
```
"""
# No OpenProject API v3, para atualizar a wiki:
# Primeiro verificamos se a wiki existe e pegamos o link
wiki_link = p['_links'].get('wikiPage')
if wiki_link:
# Se existe link, tentamos atualizar
wiki_url = f"{OP_URL}{wiki_link['href']}"
# O payload para Wiki requer formato específico
payload = {
"title": "Wiki",
"text": {"format": "markdown", "raw": wiki_content}
}
# Para atualizar via API v3, geralmente é via PATCH ou POST no endpoint de wiki
# Vamos tentar buscar a página de wiki primeiro
wiki_page = requests.get(wiki_url, auth=OP_AUTH).json()
if '_links' in wiki_page and 'update' in wiki_page['_links']:
update_url = f"{OP_URL}{wiki_page['_links']['update']['href']}"
requests.patch(update_url, auth=OP_AUTH, json=payload)
print(f" OK: Wiki de {name} atualizada.")
else:
# Se não tem link de wiki_page, o projeto pode não ter a wiki ativa.
# Tentamos ativar ou criar via endpoint de wiki pages do projeto
print(f" Aviso: Wiki não ativa para {name}. Verifique as configurações do projeto.")
if __name__ == "__main__":
update_wiki()