#!/usr/bin/env python3 import re from constants import HOMEWORK, SUFFIX from commands.base import BaseGitCommand from git import add_files, commit, push from gitlab import post_mr from utils import run_cmd class MergeRequests(BaseGitCommand): @staticmethod def get_files(submission: str) -> None: relative_path = f"/home/kontr/kontr/_tmp_/ib111/{HOMEWORK}/{submission}" files = f"{{master-naostro/LoadTest/{HOMEWORK}.py,teacher_email}}" if run_cmd("rsync", "-avzP", f"aisa:{relative_path}/{files}", "./")[0] != 0: exit(1) @staticmethod def call_flake() -> None: process = run_cmd("flake8", "--exit-zero", f"{HOMEWORK}.py")[1] with open("flake.log", "w") as f: print(process.stdout, file=f) @staticmethod def get_mail() -> None: with open("teacher_email") as file: contents = file.read() match = re.search(r"
((.*\s+)+)<\/pre>", contents)

            return match.group(1) if match else contents

    def exec(self, login: str, submission: str) -> None:
        self.get_files(submission)
        self.call_flake()

        add_files(f"{HOMEWORK}.py", "flake.log")
        commit(f'"Add sources and flake log ({HOMEWORK}{SUFFIX} {login})"')
        push("origin", self.branch)

        post_mr(
            source_branch=self.branch,
            target_branch="master",
            title=f"[{HOMEWORK}{SUFFIX}] {login}",
            description=f"```\n{self.get_mail()}\n```",
            labels=HOMEWORK,
            remove_source_branch="true",
            assignee_ids=["1772"],
        )