summaryrefslogtreecommitdiffstats
path: root/main.py
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2020-09-06 14:53:18 -0400
committerMike Frysinger <vapier@google.com>2020-11-18 19:10:57 +0000
commit8c1e9cbef161f2ff12dadbacf26affd23876fde9 (patch)
treefcfdc404568a2d8dbc9edd9ec99ecdd758f8c424 /main.py
parenta488af5ea5c53dd7cf2c90a751e77cc4ba87b7c3 (diff)
downloadgit-repo-8c1e9cbef161f2ff12dadbacf26affd23876fde9.tar.gz
manifest_xml: refactor manifest parsing from client management
We conflate the manifest & parsing logic with the management of the repo client checkout in a single class. This makes testing just one part (the manifest parsing) hard as it requires a full checkout too. Start splitting the two apart into separate classes to make it easy to reason about & test. Change-Id: Iaf897c93db9c724baba6044bfe7a589c024523b2 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/288682 Reviewed-by: Michael Mortensen <mmortensen@google.com> Tested-by: Mike Frysinger <vapier@google.com>
Diffstat (limited to 'main.py')
-rwxr-xr-xmain.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/main.py b/main.py
index cd62793d..e152de4f 100755
--- a/main.py
+++ b/main.py
@@ -63,7 +63,7 @@ from error import NoManifestException
63from error import NoSuchProjectError 63from error import NoSuchProjectError
64from error import RepoChangedException 64from error import RepoChangedException
65import gitc_utils 65import gitc_utils
66from manifest_xml import GitcManifest, XmlManifest 66from manifest_xml import GitcClient, RepoClient
67from pager import RunPager, TerminatePager 67from pager import RunPager, TerminatePager
68from wrapper import WrapperPath, Wrapper 68from wrapper import WrapperPath, Wrapper
69 69
@@ -212,14 +212,15 @@ class _Repo(object):
212 return 1 212 return 1
213 213
214 cmd.repodir = self.repodir 214 cmd.repodir = self.repodir
215 cmd.manifest = XmlManifest(cmd.repodir) 215 cmd.client = RepoClient(cmd.repodir)
216 cmd.manifest = cmd.client.manifest
216 cmd.gitc_manifest = None 217 cmd.gitc_manifest = None
217 gitc_client_name = gitc_utils.parse_clientdir(os.getcwd()) 218 gitc_client_name = gitc_utils.parse_clientdir(os.getcwd())
218 if gitc_client_name: 219 if gitc_client_name:
219 cmd.gitc_manifest = GitcManifest(cmd.repodir, gitc_client_name) 220 cmd.gitc_manifest = GitcClient(cmd.repodir, gitc_client_name)
220 cmd.manifest.isGitcClient = True 221 cmd.client.isGitcClient = True
221 222
222 Editor.globalConfig = cmd.manifest.globalConfig 223 Editor.globalConfig = cmd.client.globalConfig
223 224
224 if not isinstance(cmd, MirrorSafeCommand) and cmd.manifest.IsMirror: 225 if not isinstance(cmd, MirrorSafeCommand) and cmd.manifest.IsMirror:
225 print("fatal: '%s' requires a working directory" % name, 226 print("fatal: '%s' requires a working directory" % name,
@@ -247,7 +248,7 @@ class _Repo(object):
247 return 1 248 return 1
248 249
249 if gopts.pager is not False and not isinstance(cmd, InteractiveCommand): 250 if gopts.pager is not False and not isinstance(cmd, InteractiveCommand):
250 config = cmd.manifest.globalConfig 251 config = cmd.client.globalConfig
251 if gopts.pager: 252 if gopts.pager:
252 use_pager = True 253 use_pager = True
253 else: 254 else: