This repository has been archived by the owner on Oct 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathoj.py
executable file
·47 lines (37 loc) · 1.56 KB
/
oj.py
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
#!/opt/csw/bin/python2.7
import argparse
from commands import auth, get_assign, get_problem, status, submit
parser = argparse.ArgumentParser(
prog="oj",
description="CLI tool that helping you access CP Online Judge",
)
subparsers = parser.add_subparsers(dest="subcmd")
parser_login = subparsers.add_parser(
"login", description="Login your account to CP Online Judge"
)
parser_login.set_defaults(func=auth)
parser_get_assign = subparsers.add_parser(
"get_assign", description="Get assignment/exercise from contest"
)
parser_get_assign.add_argument("assign_no", type=str, help="assignment number")
parser_get_assign.set_defaults(func=get_assign)
parser_get_problem = subparsers.add_parser(
"get_problem", description="Get problem from public problem"
)
parser_get_problem.add_argument("problem_id", type=str, help="problem display ID")
parser_submit = subparsers.add_parser(
"submit", description="Submit and grade your code"
)
parser_submit.add_argument("assign_no", type=str, help="assignment number")
parser_submit.add_argument("code_file", type=str, help="file of your codes")
parser_status = subparsers.add_parser("status", description="Get submission status")
parser_status.add_argument("submission_id", type=str, help="the submission id")
args = parser.parse_args()
cmd_to_func = {
"login": auth,
"get_assign": lambda: get_assign(args.assign_no),
"get_problem": lambda: get_problem(args.problem_id),
"submit": lambda: submit(args.assign_no, args.code_file),
"status": lambda: status(args.submission_id),
}
cmd_to_func[args.subcmd]()