diff --git a/joint_teapot/app.py b/joint_teapot/app.py index c8a7111..2dbbd3f 100644 --- a/joint_teapot/app.py +++ b/joint_teapot/app.py @@ -1,3 +1,4 @@ +import glob import json import os import re @@ -6,6 +7,7 @@ from pathlib import Path from time import sleep from typing import TYPE_CHECKING, List +import mosspy from filelock import FileLock from git import Repo 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.utils import joj3 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: import focs_gitea @@ -75,6 +75,23 @@ def clone_all_repos() -> None: 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") def create_issue_for_repos( repo_names: List[str], diff --git a/joint_teapot/config.py b/joint_teapot/config.py index 2a2f1a0..4eb4a8c 100644 --- a/joint_teapot/config.py +++ b/joint_teapot/config.py @@ -43,6 +43,9 @@ class Settings(BaseSettings): joj3_lock_file_path: str = ".git/teapot.lock" joj3_lock_file_timeout: int = 30 + # moss + moss_user_id: int + # log file log_file_path: str = "joint-teapot.log" stderr_log_level: str = "INFO" diff --git a/requirements.txt b/requirements.txt index 53d58bc..babb6bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ GitPython>=3.1.18 joj-submitter>=0.0.8 loguru>=0.5.3 mattermostdriver>=7.3.2 +mosspy>=1.0.9 patool>=1.12 pydantic>=2.0.2 pydantic-settings>=2.0.1