From bb930461cee056de210816e58c36a8d6dfd122be Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 25 Feb 2020 15:18:31 -0500 Subject: subcmds: stop instantiating at import time The current subcmds design has singletons in all_commands. This isn't exactly unusual, but the fact that our main & help subcommand will then attach members to the classes before invoking them is. This makes it hard to keep track of what members a command has access to, and the two code paths (main & help) attach different members depending on what APIs they then invoke. Lets pull this back a step by storing classes in all_commands and leave the instantiation step to when they're used. This doesn't fully clean up the confusion, but gets us closer. Change-Id: I6a768ff97fe541e6f3228358dba04ed66c4b070a Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259154 Tested-by: Mike Frysinger Reviewed-by: David Pursehouse --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'main.py') diff --git a/main.py b/main.py index b309fad3..1393b400 100755 --- a/main.py +++ b/main.py @@ -204,7 +204,7 @@ class _Repo(object): SetDefaultColoring(gopts.color) try: - cmd = self.commands[name] + cmd = self.commands[name]() except KeyError: print("repo: '%s' is not a repo command. See 'repo help'." % name, file=sys.stderr) -- cgit v1.2.3-54-g00ecf