97 lines
2.8 KiB
Python
97 lines
2.8 KiB
Python
#!/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())
|