#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Crea repo progetti per davide/luca e progetti Loogle collegati.""" from __future__ import annotations 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 ensure_repo(user: str, repo_name: str, description: str) -> str: from app.knowledge import gitea gitea._tokens_cache = None full = f"{user}/{repo_name}" existing = {r["full_name"] for r in gitea.list_repos(username=user)["repos"]} if full in existing: print(f"repo_exists: {full}") return full created = gitea.create_repo( repo_name, username=user, private=True, description=description, auto_init=True, ) print(f"repo_created: {created['full_name']}") return created["full_name"] def ensure_mcp_project(user: str, project_title: str, gitea_repo: str) -> None: from app.context import store as context_store projects = {p["id"]: p for p in context_store.list_projects(user, include_archived=True)} for meta in projects.values(): if meta.get("gitea_repo") == gitea_repo: print(f"project_linked: {user}/{meta['id']} -> {gitea_repo}") return slug = project_title.lower().replace(" ", "-") if slug in projects: meta = context_store.link_project_repo(user, slug, gitea_repo=gitea_repo, seed_from_gitea=True) print(f"project_updated: {user}/{meta['id']} -> {gitea_repo}") return meta = context_store.create_project( user, project_title, tags=["gitea", "p4"], gitea_repo=gitea_repo, seed_from_gitea=True, ) print(f"project_created: {user}/{meta['id']} -> {gitea_repo}") def main() -> int: _load_dotenv() os.environ.setdefault("MCP_DB", os.environ.get("MCP_DB", "/data/loogle_mcp.db")) from app.db import init_db init_db() ensure_repo( "davide", "progetti", "Workspace personale — codice e note generate con Loogle MCP", ) ensure_repo( "luca", "progetti", "Workspace personale — codice e note generate con Loogle MCP", ) ensure_mcp_project("davide", "Progetti Davide", "davide/progetti") ensure_mcp_project("luca", "Progetti Luca", "luca/progetti") return 0 if __name__ == "__main__": raise SystemExit(main())