Skip to content

Commit a80fd8c

Browse files
committed
refactor: reduce complexity of __main__
1 parent 6c0ccda commit a80fd8c

1 file changed

Lines changed: 39 additions & 31 deletions

File tree

scratchattach/__main__.py

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ def main():
2222
)
2323

2424
# Using walrus operator & ifs for artificial indentation
25+
# TODO: there may be a better way to do this
2526
if commands := parser.add_subparsers(dest="command"):
2627
commands.add_parser("profile", help="View your profile")
2728
commands.add_parser("sessions", help="View session list")
2829
if login := commands.add_parser("login", help="Login to Scratch"):
29-
login.add_argument("--sessid", dest="sessid", nargs="?", default=False, const=True,
30-
help="Login by session ID")
30+
login.add_argument("--sessid", dest="sessid", nargs="?", default=False, const=True, help="Login by session ID")
3131
if group := commands.add_parser("group", help="View current session group"):
3232
if group_commands := group.add_subparsers(dest="group_command"):
3333
group_commands.add_parser("list", help="List all session groups")
@@ -46,10 +46,13 @@ def main():
4646
parser.add_argument("-U", "--username", dest="username", help="Name of user to look at")
4747
parser.add_argument("-P", "--project", dest="project_id", help="ID of project to look at")
4848
parser.add_argument("-S", "--studio", dest="studio_id", help="ID of studio to look at")
49-
parser.add_argument("-L", "--session_name", dest="session_name",
50-
help="Name of (registered) session/login to look at")
49+
parser.add_argument("-L", "--session_name", dest="session_name", help="Name of (registered) session/login to look at")
5150

5251
args = parser.parse_args(namespace=cli.ArgSpace())
52+
handle_args(args, parser)
53+
54+
55+
def handle_args(args: cli.ArgSpace, parser: argparse.ArgumentParser):
5356
cli.ctx.args = args
5457
cli.ctx.parser = parser
5558

@@ -63,31 +66,36 @@ def main():
6366
case "profile":
6467
cmd.profile()
6568
case None:
66-
if args.username:
67-
user = ctx.session.connect_user(args.username)
68-
console.print(cli.try_get_img(user.icon, (30, 30)))
69-
console.print(user)
70-
return
71-
if args.studio_id:
72-
studio = ctx.session.connect_studio(args.studio_id)
73-
console.print(cli.try_get_img(studio.thumbnail, (34, 20)))
74-
console.print(studio)
75-
return
76-
if args.project_id:
77-
project = ctx.session.connect_project(args.project_id)
78-
console.print(cli.try_get_img(project.thumbnail, (30, 23)))
79-
console.print(project)
80-
return
81-
if args.session_name:
82-
if sess := ctx.db_get_sess(args.session_name):
83-
console.print(sess)
84-
else:
85-
raise ValueError(f"No session logged in called {args.session_name!r} "
86-
f"- try using `scratch sessions` to see available sessions")
87-
return
88-
89-
parser.print_help()
90-
91-
92-
if __name__ == '__main__':
69+
handle_nocmd(args, parser)
70+
71+
72+
def handle_nocmd(args: cli.ArgSpace, parser: argparse.ArgumentParser):
73+
if args.username:
74+
user = ctx.session.connect_user(args.username)
75+
console.print(cli.try_get_img(user.icon, (30, 30)))
76+
console.print(user)
77+
return
78+
if args.studio_id:
79+
studio = ctx.session.connect_studio(args.studio_id)
80+
console.print(cli.try_get_img(studio.thumbnail, (34, 20)))
81+
console.print(studio)
82+
return
83+
if args.project_id:
84+
project = ctx.session.connect_project(args.project_id)
85+
console.print(cli.try_get_img(project.thumbnail, (30, 23)))
86+
console.print(project)
87+
return
88+
if args.session_name:
89+
if sess := ctx.db_get_sess(args.session_name):
90+
console.print(sess)
91+
else:
92+
raise ValueError(
93+
f"No session logged in called {args.session_name!r} - try using `scratch sessions` to see available sessions"
94+
)
95+
return
96+
97+
parser.print_help()
98+
99+
100+
if __name__ == "__main__":
93101
main()

0 commit comments

Comments
 (0)