GRM-36: fix: use correct Gitea 1.26 wiki API endpoints

Updated sync_wiki.py to use correct Gitea 1.26 wiki API: POST /wiki/new for create, PATCH /wiki/page/{sub_url} for update, GET /wiki/pages returns sub_url. Tests updated to match.

Closes GRM-36
This commit is contained in:
2026-06-21 19:55:18 +00:00
parent 539bfea516
commit 6f181e85e1
2 changed files with 22 additions and 15 deletions
+15 -9
View File
@@ -6,6 +6,12 @@ map file paths to wiki page titles, and creates/updates wiki pages via the
Gitea API. Pages that exist in the wiki but not in the mapping are left
untouched (not deleted).
Gitea 1.26 wiki API endpoints:
- Create: POST /repos/{owner}/{repo}/wiki/new {title, content, message}
- Update: PATCH /repos/{owner}/{repo}/wiki/page/{sub_url} {title, content, message}
- List: GET /repos/{owner}/{repo}/wiki/pages → [{title, sub_url, ...}]
- Delete: DELETE /repos/{owner}/{repo}/wiki/page/{sub_url}
Usage:
REPO_TOKEN=<token> python3 scripts/sync_wiki.py [--dry-run] [--repo owner/repo]
"""
@@ -44,12 +50,12 @@ def read_doc_content(file_path: str) -> str:
def list_wiki_pages(client: GiteaClient) -> dict[str, str]:
"""List existing wiki pages, returning {title: page_name}."""
"""List existing wiki pages, returning {title: sub_url}."""
try:
pages = client._request("GET", "/wiki/pages").json()
except APIError:
return {}
return {page.get("title", ""): page.get("page_name", page.get("title", "")) for page in pages}
return {page.get("title", ""): page.get("sub_url", page.get("title", "")) for page in pages}
def sync_page(
@@ -68,19 +74,19 @@ def sync_page(
return "skipped"
if page_title in existing_pages:
# Update existing page
page_name = existing_pages[page_title]
# Update existing page via PATCH
sub_url = existing_pages[page_title]
client._request(
"PUT",
f"/wiki/page/{page_name}",
json={"content": content, "message": f"Sync from docs/ — update {page_title}"},
"PATCH",
f"/wiki/page/{sub_url}",
json={"title": page_title, "content": content, "message": f"Sync from docs/ — update {page_title}"},
)
return "updated"
# Create new page
# Create new page via POST /wiki/new
client._request(
"POST",
"/wiki/page",
"/wiki/new",
json={"title": page_title, "content": content, "message": f"Sync from docs/ — create {page_title}"},
)
return "created"