feat: moss all repos

This commit is contained in:
张泊明518370910136 2025-03-26 18:20:01 -04:00
parent d094d7a974
commit 07db55402b
GPG Key ID: CA088E6D9284F870
3 changed files with 23 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import glob
import json import json
import os import os
import re import re
@ -6,6 +7,7 @@ from pathlib import Path
from time import sleep from time import sleep
from typing import TYPE_CHECKING, List from typing import TYPE_CHECKING, List
import mosspy
from filelock import FileLock from filelock import FileLock
from git import Repo from git import Repo
from typer import Argument, Exit, Option, Typer, echo from typer import Argument, Exit, Option, Typer, echo
@ -14,8 +16,6 @@ from joint_teapot.config import Settings, set_settings, settings
from joint_teapot.teapot import Teapot from joint_teapot.teapot import Teapot
from joint_teapot.utils import joj3 from joint_teapot.utils import joj3
from joint_teapot.utils.logger import logger, set_logger from joint_teapot.utils.logger import logger, set_logger
from joint_teapot.utils.main import first
from joint_teapot.workers.joj import JOJ
if TYPE_CHECKING: if TYPE_CHECKING:
import focs_gitea import focs_gitea
@ -75,6 +75,23 @@ def clone_all_repos() -> None:
tea.pot.clone_all_repos() tea.pot.clone_all_repos()
@app.command("moss-all-repos", help="moss all gitea repos")
def moss_all_repos(language: str = "cc", wildcards: List[str] = ["*.*"]) -> None:
m = mosspy.Moss(settings.moss_user_id, language)
for repo_name in tea.pot.gitea.get_all_repo_names():
base_dir = os.path.join(settings.repos_dir, repo_name)
for wildcard in wildcards:
full_wildcard = os.path.join(base_dir, wildcard)
for file in glob.glob(full_wildcard, recursive=True):
if not os.path.isfile(file):
continue
logger.info(f"Adding file {file}")
m.files.append((file, os.path.relpath(file, settings.repos_dir)))
logger.info("Sending files")
url = m.send()
echo("Report Url: " + url)
@app.command("create-issues", help="create issues on gitea") @app.command("create-issues", help="create issues on gitea")
def create_issue_for_repos( def create_issue_for_repos(
repo_names: List[str], repo_names: List[str],

View File

@ -43,6 +43,9 @@ class Settings(BaseSettings):
joj3_lock_file_path: str = ".git/teapot.lock" joj3_lock_file_path: str = ".git/teapot.lock"
joj3_lock_file_timeout: int = 30 joj3_lock_file_timeout: int = 30
# moss
moss_user_id: int
# log file # log file
log_file_path: str = "joint-teapot.log" log_file_path: str = "joint-teapot.log"
stderr_log_level: str = "INFO" stderr_log_level: str = "INFO"

View File

@ -6,6 +6,7 @@ GitPython>=3.1.18
joj-submitter>=0.0.8 joj-submitter>=0.0.8
loguru>=0.5.3 loguru>=0.5.3
mattermostdriver>=7.3.2 mattermostdriver>=7.3.2
mosspy>=1.0.9
patool>=1.12 patool>=1.12
pydantic>=2.0.2 pydantic>=2.0.2
pydantic-settings>=2.0.1 pydantic-settings>=2.0.1