Backup automatico script del 2026-08-23 12:04

This commit is contained in:
daniele committed 2026-08-23 12:04:16 +02:00
1 parent 11823447a2
commit 795a15a7b6
66 files changed
+8546

No files matched your search

@@ -0,0 +1,111 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Test P4: scrittura Gitea (create repo, create/update file)."""
from __future__ import annotations
import json
import os
import sys
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if ROOT not in sys.path:
sys.path.insert(0, ROOT)
def _load_dotenv() -> None:
path = os.path.join(ROOT, ".env")
if not os.path.isfile(path):
return
with open(path, encoding="utf-8") as fh:
for line in fh:
line = line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
k, _, v = line.partition("=")
os.environ[k.strip()] = v.strip().strip("'").strip('"')
def main() -> int:
_load_dotenv()
os.environ.setdefault("MCP_DB", "/data/loogle_mcp.db")
from app.db import init_db
from app.knowledge import gitea
from app.mcp import tools
init_db()
gitea._tokens_cache = None
if not os.environ.get("GITEA_API_TOKEN_DANIELE"):
print("ERR: token daniele assente")
return 1
claims = {"sub": "daniele", "scope": "gitea:read gitea:write knowledge:read admin"}
test_repo = "daniele/mcp-p4-test"
test_path = "docs/p4-verify.md"
test_content = "# P4 verify\n\nFile creato da test_gitea_p4.py\n"
# cleanup file if exists from prior run
try:
gitea.get_file(test_repo, test_path, username="daniele")
gitea.create_or_update_file(
test_repo,
test_path,
test_content + "\n(updated)\n",
"test p4 update",
username="daniele",
)
action = "update"
except FileNotFoundError:
# ensure repo exists - use temp repo name under daniele
repos = {r["full_name"] for r in gitea.list_repos(username="daniele")["repos"]}
if test_repo not in repos:
created = tools.call_tool(
"create_gitea_repo",
{
"name": "mcp-p4-test",
"private": True,
"description": "Repo temporaneo test P4",
},
claims,
)
print("create_repo", created["content"][0]["text"][:200])
written = tools.call_tool(
"create_or_update_file",
{
"repo": test_repo,
"path": test_path,
"content": test_content,
"message": "test p4 create",
"reindex": False,
},
claims,
)
payload = json.loads(written["content"][0]["text"])
action = payload.get("action")
print("write", action, payload.get("path"))
read = gitea.get_file(test_repo, test_path, username="daniele")
assert "P4 verify" in read.get("content", ""), read
print("read_ok", read["path"])
for user, repo in (("davide", "davide/progetti"), ("luca", "luca/progetti")):
token_key = f"GITEA_API_TOKEN_{user.upper()}"
if not os.environ.get(token_key):
print(f"SKIP {user}: no token")
continue
gitea._tokens_cache = None
listed = gitea.list_repos(username=user)
names = {r["full_name"] for r in listed["repos"]}
if repo not in names:
raise RuntimeError(f"repo mancante per {user}: {repo}")
print(f"{user}_repo_ok", repo)
print("OK P4: create_or_update_file + repos davide/luca/progetti")
return 0
if __name__ == "__main__":
raise SystemExit(main())