summaryrefslogtreecommitdiff
path: root/leningrade.py
blob: 0644abe321b6a891b345a9f67050096a3ee0286a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import argparse
from worker import GitWorker, GiteaWorker, JOJWorker
from problem_info import problem_info
from config import *


parser = argparse.ArgumentParser("leningrade")
parser.add_argument(
    "-n",
    "--homework-number",
    type=int,
    required=True,
    help="An integer. For h1, the value should be 1.",
)
parser.add_argument("-I", "--no-individual", action="store_true", default=False)
parser.add_argument("-G", "--no-group", action="store_true", default=False)
parser.add_argument(
    "-J",
    "--no-joj",
    action="store_true",
    default=False,
    help="JOJ may consume a lot of time. Set this flag if your group work has proven to pass JOJ.",
)

cli_args = parser.parse_args()


class Arguments:
    hw = cli_args.homework_number
    rejudge = HGROUP_NO  # I do not understand the naming
    dir = True
    tidy = True
    score = True


args = Arguments()

gitWorker = GitWorker(args, HGROUP, None, LANGUAGE, MANDATORY_FILES, OPTIONAL_FILES)
giteaWorker = GiteaWorker(args, GITEA_API_BASE, GITEA_ORG, GITEA_TOKEN, HGROUP)
jojWorker = JOJWorker(args, JOJ_COURSE_ID, JOJ_SESSION_ID, HGROUP)

JOJ_INFO = {
    "homeworkID": JOJ_HOMEWORK_ID,
    "lang": LANGUAGE,
    # "problemInfo": [
    #     # filenames, problem ID, # of test cases
    #     (["ex2.m"], "61553cffb3c06a0006f45da3", 10),
    #     (["ex4.m"], "61553e5fb3c06a0006f45da9", 10),
    #     (["ex5.m"], "61553f8cb3c06a0006f45db2", 10),
    #     (["ex6.m"], "6155414cb3c06a0006f45dc7", 10),
    # ],
    "problemInfo": problem_info(JOJ_HOMEWORK_ID),
}

# individual
if not cli_args.no_individual:
    indvScores = gitWorker.checkIndv()
    print(indvScores)
# group
if not cli_args.no_group:
    groupScores = gitWorker.checkGroup()
    tmpScores = giteaWorker.checkReview()
    for key in groupScores.keys():
        groupScores[key] = {**groupScores.get(key, {}), **tmpScores.get(key, {})}
    print(groupScores)
# JOJ (This will consume a lot of time when the code is in MATLAB)
if not cli_args.no_joj:
    jojScores = jojWorker.checkGroupJOJ(JOJ_INFO)
    print(jojScores)