-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path__main__.py
More file actions
87 lines (67 loc) · 2.69 KB
/
__main__.py
File metadata and controls
87 lines (67 loc) · 2.69 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import argparse
import sys
from . import core
from getpass import getpass
class Validator:
NOT_REQUIRED_ARGUMENTS_MESSAGE = "不必要な引数が指定されています!"
def __init__(self, option):
self.option = option
def login_validation(self):
if len(self.option) > 1:
print(self.NOT_REQUIRED_ARGUMENTS_MESSAGE)
try:
user_id = self.option[0]
except IndexError:
sys.exit("ユーザIDが指定されていません\nusage: cli.py login <user_id>")
return user_id
def no_args_validation(self):
if len(self.option) != 0:
print(self.NOT_REQUIRED_ARGUMENTS_MESSAGE)
def select_project_validation(self):
if len(self.option) > 1:
print(self.NOT_REQUIRED_ARGUMENTS_MESSAGE)
try:
name = self.option[0]
except IndexError:
sys.exit("プロジェクト名が指定されていません\nusage: cli.py select <project_name>")
return name
def post_issue_validation(self):
if len(self.option) > 2:
print(self.NOT_REQUIRED_ARGUMENTS_MESSAGE)
try:
title, text = self.option[0:2]
except IndexError:
sys.exit("タイトルと本文を入力してください\nusage: cli.py post <title> <text>")
return (title, text)
def main():
command_parser = argparse.ArgumentParser(add_help=False)
command_parser.add_argument(
"command",
choices=["setup", "reset", "login", "list", "select", "issues", "post"],
help="実行されるコマンド"
)
option_parser = argparse.ArgumentParser(parents=[command_parser])
option_parser.add_argument("--baseurl", default="https://etrack.timedia.co.jp/EasyTracker/")
option_parser.add_argument("option", nargs="*")
args = option_parser.parse_args()
validator = Validator(args.option)
if args.command in ["setup", "reset", "list", "issues"]:
validator.no_args_validation()
if args.command in ["setup", "reset"]:
core.setup()
elif args.command == "list":
core.list_projects(args.baseurl)
else:
core.list_issues(args.baseurl)
elif args.command == "login":
user_id = validator.login_validation()
password = getpass("passwordを入力してください:")
core.login(args.baseurl, user_id, password)
elif args.command == "select":
name = validator.select_project_validation()
core.select_project(args.baseurl, name)
elif args.command == "post":
title, text = validator.post_issue_validation()
core.post_issue(args.baseurl, title, text)
if __name__ == "__main__":
main()