This repository has been archived on 2023-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
pushee/commands/merge_requests.py

54 lines
1.6 KiB
Python
Raw Normal View History

#!/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"<pre>((.*\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"],
)