64 lines
2 KiB
Python
64 lines
2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
|
|
import glob
|
|
import os
|
|
import re
|
|
|
|
|
|
from commands.base import BaseGitCommand
|
|
from git import add_files, commit, push
|
|
from submission import Submission
|
|
from utils import run_cmd
|
|
|
|
|
|
class MergeRequests(BaseGitCommand):
|
|
def get_files(self, submission: Submission) -> None:
|
|
files = []
|
|
for file in self.hw["files"]:
|
|
files.extend(glob.glob(f'{submission.path}/{self.hw["prefix"]}/{file}'))
|
|
files = map(lambda f: f.split("/")[-1], files)
|
|
|
|
for file in files:
|
|
if (
|
|
run_cmd(
|
|
"rsync",
|
|
"-avzP",
|
|
f"aisa:{submission.path}/{self.hw['prefix']}/{file}",
|
|
"./",
|
|
)[0]
|
|
!= 0
|
|
):
|
|
exit(1)
|
|
|
|
@staticmethod
|
|
def call_flake(submission: Submission) -> None:
|
|
process = run_cmd("flake8", "--exit-zero", f"{submission.homework}.py")[1]
|
|
with open("flake.log", "w") as f:
|
|
print(process.stdout, file=f)
|
|
|
|
def exec(self, submission: Submission) -> None:
|
|
self.get_files(submission)
|
|
# self.call_flake(submission)
|
|
|
|
add_files(*self.hw["files"])
|
|
commit(f'"Add sources ({submission.branch} {submission.login})"')
|
|
push("origin", submission.branch)
|
|
|
|
mail = f"<details>\n<summary>Mail</summary>\n\n<pre>{submission.get_mail()}</pre></details>"
|
|
|
|
try:
|
|
mr = self.gitlab.post_mr(
|
|
source_branch=submission.branch,
|
|
target_branch="master",
|
|
title=f"[{submission.homework}{'-opravne' if submission.correction else ''}] {submission.login}",
|
|
description=mail,
|
|
labels=submission.homework,
|
|
remove_source_branch="true",
|
|
assignee_ids=["1772"],
|
|
)
|
|
mr.comment(
|
|
body="Summary\n=======\n\n# TODO\n\nDiff notes\n==========\n\n# TODO\n\nCorrection (YYYY/MM/DD)\n=======================\n\n# TODO"
|
|
)
|
|
except:
|
|
pass
|