summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2021-06-14 16:17:27 -0400
committerMike Frysinger <vapier@google.com>2021-06-15 06:08:13 +0000
commitd58d0dd3bf40f2c5e754c8a0a622c7d4e58425b8 (patch)
tree37fc46209f7822a29b0879bc2aa7405323f3db4a
parentd88b369a42462cf5fe4ff2a09b9b7b52e0ee333a (diff)
downloadgit-repo-d58d0dd3bf40f2c5e754c8a0a622c7d4e58425b8.tar.gz
commands: pass settings via __init__
Instead of setting properties on the instantiated command, pass them via the constructor like normal objects. Change-Id: I8787499bd2be68565875ffe243c3cf2024b36ae7 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/309324 Reviewed-by: Raman Tenneti <rtenneti@google.com> Tested-by: Mike Frysinger <vapier@google.com>
-rw-r--r--command.py12
-rwxr-xr-xmain.py24
-rw-r--r--subcmds/help.py6
3 files changed, 24 insertions, 18 deletions
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):
43 """Base class for any command line action in repo. 43 """Base class for any command line action in repo.
44 """ 44 """
45 45
46 manifest = None
47 _optparse = None
48
49 # Singleton for all commands to track overall repo command execution and 46 # Singleton for all commands to track overall repo command execution and
50 # provide event summary to callers. Only used by sync subcommand currently. 47 # provide event summary to callers. Only used by sync subcommand currently.
51 # 48 #
@@ -61,6 +58,15 @@ class Command(object):
61 # it is the number of parallel jobs to default to. 58 # it is the number of parallel jobs to default to.
62 PARALLEL_JOBS = None 59 PARALLEL_JOBS = None
63 60
61 def __init__(self, repodir=None, client=None, manifest=None, gitc_manifest=None):
62 self.repodir = repodir
63 self.client = client
64 self.manifest = manifest
65 self.gitc_manifest = gitc_manifest
66
67 # Cache for the OptionParser property.
68 self._optparse = None
69
64 def WantPager(self, _opt): 70 def WantPager(self, _opt):
65 return False 71 return False
66 72
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):
195 195
196 SetDefaultColoring(gopts.color) 196 SetDefaultColoring(gopts.color)
197 197
198 git_trace2_event_log = EventLog()
199 repo_client = RepoClient(self.repodir)
200 gitc_manifest = None
201 gitc_client_name = gitc_utils.parse_clientdir(os.getcwd())
202 if gitc_client_name:
203 gitc_manifest = GitcClient(self.repodir, gitc_client_name)
204 repo_client.isGitcClient = True
205
198 try: 206 try:
199 cmd = self.commands[name]() 207 cmd = self.commands[name](
208 repodir=self.repodir,
209 client=repo_client,
210 manifest=repo_client.manifest,
211 gitc_manifest=gitc_manifest)
200 except KeyError: 212 except KeyError:
201 print("repo: '%s' is not a repo command. See 'repo help'." % name, 213 print("repo: '%s' is not a repo command. See 'repo help'." % name,
202 file=sys.stderr) 214 file=sys.stderr)
203 return 1 215 return 1
204 216
205 git_trace2_event_log = EventLog()
206 cmd.repodir = self.repodir
207 cmd.client = RepoClient(cmd.repodir)
208 cmd.manifest = cmd.client.manifest
209 cmd.gitc_manifest = None
210 gitc_client_name = gitc_utils.parse_clientdir(os.getcwd())
211 if gitc_client_name:
212 cmd.gitc_manifest = GitcClient(cmd.repodir, gitc_client_name)
213 cmd.client.isGitcClient = True
214
215 Editor.globalConfig = cmd.client.globalConfig 217 Editor.globalConfig = cmd.client.globalConfig
216 218
217 if not isinstance(cmd, MirrorSafeCommand) and cmd.manifest.IsMirror: 219 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.
138 138
139 def _PrintAllCommandHelp(self): 139 def _PrintAllCommandHelp(self):
140 for name in sorted(all_commands): 140 for name in sorted(all_commands):
141 cmd = all_commands[name]() 141 cmd = all_commands[name](manifest=self.manifest)
142 cmd.manifest = self.manifest
143 self._PrintCommandHelp(cmd, header_prefix='[%s] ' % (name,)) 142 self._PrintCommandHelp(cmd, header_prefix='[%s] ' % (name,))
144 143
145 def _Options(self, p): 144 def _Options(self, p):
@@ -163,12 +162,11 @@ Displays detailed usage information about a command.
163 name = args[0] 162 name = args[0]
164 163
165 try: 164 try:
166 cmd = all_commands[name]() 165 cmd = all_commands[name](manifest=self.manifest)
167 except KeyError: 166 except KeyError:
168 print("repo: '%s' is not a repo command." % name, file=sys.stderr) 167 print("repo: '%s' is not a repo command." % name, file=sys.stderr)
169 sys.exit(1) 168 sys.exit(1)
170 169
171 cmd.manifest = self.manifest
172 self._PrintCommandHelp(cmd) 170 self._PrintCommandHelp(cmd)
173 171
174 else: 172 else: