diff --git a/command.py b/command.py index 94f4d754..dc765db0 100644 --- a/command.py +++ b/command.py @@ -43,9 +43,6 @@ class Command(object): """Base class for any command line action in repo. """ - manifest = None - _optparse = None - # Singleton for all commands to track overall repo command execution and # provide event summary to callers. Only used by sync subcommand currently. # @@ -61,6 +58,15 @@ class Command(object): # it is the number of parallel jobs to default to. PARALLEL_JOBS = None + def __init__(self, repodir=None, client=None, manifest=None, gitc_manifest=None): + self.repodir = repodir + self.client = client + self.manifest = manifest + self.gitc_manifest = gitc_manifest + + # Cache for the OptionParser property. + self._optparse = None + def WantPager(self, _opt): return False diff --git a/main.py b/main.py index 1f3a7683..32ad0ff6 100755 --- a/main.py +++ b/main.py @@ -195,23 +195,25 @@ class _Repo(object): SetDefaultColoring(gopts.color) + git_trace2_event_log = EventLog() + repo_client = RepoClient(self.repodir) + gitc_manifest = None + gitc_client_name = gitc_utils.parse_clientdir(os.getcwd()) + if gitc_client_name: + gitc_manifest = GitcClient(self.repodir, gitc_client_name) + repo_client.isGitcClient = True + try: - cmd = self.commands[name]() + cmd = self.commands[name]( + repodir=self.repodir, + client=repo_client, + manifest=repo_client.manifest, + gitc_manifest=gitc_manifest) except KeyError: print("repo: '%s' is not a repo command. See 'repo help'." % name, file=sys.stderr) return 1 - git_trace2_event_log = EventLog() - cmd.repodir = self.repodir - cmd.client = RepoClient(cmd.repodir) - cmd.manifest = cmd.client.manifest - cmd.gitc_manifest = None - gitc_client_name = gitc_utils.parse_clientdir(os.getcwd()) - if gitc_client_name: - cmd.gitc_manifest = GitcClient(cmd.repodir, gitc_client_name) - cmd.client.isGitcClient = True - Editor.globalConfig = cmd.client.globalConfig if not isinstance(cmd, MirrorSafeCommand) and cmd.manifest.IsMirror: diff --git a/subcmds/help.py b/subcmds/help.py index 821f6bf6..f302e75c 100644 --- a/subcmds/help.py +++ b/subcmds/help.py @@ -138,8 +138,7 @@ Displays detailed usage information about a command. def _PrintAllCommandHelp(self): for name in sorted(all_commands): - cmd = all_commands[name]() - cmd.manifest = self.manifest + cmd = all_commands[name](manifest=self.manifest) self._PrintCommandHelp(cmd, header_prefix='[%s] ' % (name,)) def _Options(self, p): @@ -163,12 +162,11 @@ Displays detailed usage information about a command. name = args[0] try: - cmd = all_commands[name]() + cmd = all_commands[name](manifest=self.manifest) except KeyError: print("repo: '%s' is not a repo command." % name, file=sys.stderr) sys.exit(1) - cmd.manifest = self.manifest self._PrintCommandHelp(cmd) else: