subcmds: centralize all_commands logic
The branch->branches alias is setup in the main module when that
really belongs in the existing all_commands setup.
For help, rather than monkey patching all_commands to the class,
switch it to use the state directly from the module. This makes
it a bit more obvious where it's coming from rather than this one
subcommand having a |commands| member added externally to it.
Change-Id: I0200def09bf4774cad8012af0f4ae60ea3089dc0
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259153
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
diff --git a/main.py b/main.py
index 98234cb..b309fad 100755
--- a/main.py
+++ b/main.py
@@ -135,8 +135,6 @@
def __init__(self, repodir):
self.repodir = repodir
self.commands = all_commands
- # add 'branch' as an alias for 'branches'
- all_commands['branch'] = all_commands['branches']
def _ParseArgs(self, argv):
"""Parse the main `repo` command line options."""
diff --git a/subcmds/__init__.py b/subcmds/__init__.py
index 9cc9471..a49e7bd 100644
--- a/subcmds/__init__.py
+++ b/subcmds/__init__.py
@@ -46,5 +46,5 @@
cmd.NAME = name
all_commands[name] = cmd
-if 'help' in all_commands:
- all_commands['help'].commands = all_commands
+# Add 'branch' as an alias for 'branches'.
+all_commands['branch'] = all_commands['branches']
diff --git a/subcmds/help.py b/subcmds/help.py
index 36b3a7a..5e24ed0 100644
--- a/subcmds/help.py
+++ b/subcmds/help.py
@@ -19,6 +19,7 @@
import sys
from formatter import AbstractFormatter, DumbWriter
+from subcmds import all_commands
from color import Coloring
from command import PagedCommand, MirrorSafeCommand, GitcAvailableCommand, GitcClientCommand
import gitc_utils
@@ -42,7 +43,7 @@
fmt = ' %%-%ds %%s' % maxlen
for name in commandNames:
- command = self.commands[name]
+ command = all_commands[name]
try:
summary = command.helpSummary.strip()
except AttributeError:
@@ -52,7 +53,7 @@
def _PrintAllCommands(self):
print('usage: repo COMMAND [ARGS]')
print('The complete list of recognized repo commands are:')
- commandNames = list(sorted(self.commands))
+ commandNames = list(sorted(all_commands))
self._PrintCommands(commandNames)
print("See 'repo help <command>' for more information on a "
'specific command.')
@@ -73,7 +74,7 @@
return False
commandNames = list(sorted([name
- for name, command in self.commands.items()
+ for name, command in all_commands.items()
if command.common and gitc_supported(command)]))
self._PrintCommands(commandNames)
@@ -132,8 +133,8 @@
out._PrintSection('Description', 'helpDescription')
def _PrintAllCommandHelp(self):
- for name in sorted(self.commands):
- cmd = self.commands[name]
+ for name in sorted(all_commands):
+ cmd = all_commands[name]
cmd.manifest = self.manifest
self._PrintCommandHelp(cmd, header_prefix='[%s] ' % (name,))
@@ -158,7 +159,7 @@
name = args[0]
try:
- cmd = self.commands[name]
+ cmd = all_commands[name]
except KeyError:
print("repo: '%s' is not a repo command." % name, file=sys.stderr)
sys.exit(1)