Skip to content

Commit 293f290

Browse files
committed
scm: suppress default properties when pretty printing
When doing a pretty-print of the SCM properties, the user is not interested in default values. We can safely suppress them to reduce the output clutter.
1 parent c6572fc commit 293f290

File tree

6 files changed

+74
-12
lines changed

6 files changed

+74
-12
lines changed

pym/bob/scm/cvs.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ class CvsScm(Scm):
3131
# Layers have no "dir" and no "if"
3232
LAYERS_SCHEMA = schema.Schema({ **__SCHEMA })
3333

34+
DEFAULT_VALUES = {
35+
"dir" : ".",
36+
}
37+
3438
# Checkout using CVS
3539
# - mandatory parameters: cvsroot, module
3640
# - optional parameters: rev, dir (dir is required if there are multiple checkouts)
@@ -42,14 +46,19 @@ def __init__(self, spec, overrides=[]):
4246
self.__dir = spec.get("dir", ".")
4347

4448
def getProperties(self, isJenkins, pretty=False):
45-
ret = super().getProperties(isJenkins)
49+
ret = super().getProperties(isJenkins, pretty)
4650
ret.update({
4751
'scm' : 'cvs',
4852
'cvsroot' : self.__cvsroot,
4953
'module' : self.__module,
5054
'rev' : self.__rev,
5155
'dir' : self.__dir
5256
})
57+
58+
if pretty:
59+
ret = { k : v for k, v in ret.items()
60+
if v is not None and v != self.DEFAULT_VALUES.get(k) }
61+
5362
return ret
5463

5564
async def invoke(self, invoker):

pym/bob/scm/git.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,17 @@ class GitScm(Scm):
104104

105105
REMOTE_PREFIX = "remote-"
106106

107+
DEFAULT_VALUES = {
108+
'dir' : ".",
109+
'retries' : 0,
110+
'sslVerify' : True,
111+
'submodules' : False,
112+
'recurseSubmodules' : False,
113+
'shallowSubmodules' : True,
114+
'dissociate' : False,
115+
'rebase' : False,
116+
}
117+
107118
def __init__(self, spec, overrides=[], stripUser=None, useBranchAndCommit=False):
108119
super().__init__(spec, overrides)
109120
self.__url = spec["url"]
@@ -149,7 +160,7 @@ def __resolveReferences(self, alt):
149160
self.__references]]
150161

151162
def getProperties(self, isJenkins, pretty=False):
152-
properties = super().getProperties(isJenkins)
163+
properties = super().getProperties(isJenkins, pretty)
153164

154165
if self.__commit:
155166
rev = self.__commit
@@ -182,6 +193,11 @@ def getProperties(self, isJenkins, pretty=False):
182193
})
183194
for key, val in self.__remotes.items():
184195
properties.update({GitScm.REMOTE_PREFIX+key : val})
196+
197+
if pretty:
198+
properties = { k : v for k, v in properties.items()
199+
if v is not None and v != self.DEFAULT_VALUES.get(k) }
200+
185201
return properties
186202

187203
def _getGitConfigOptions(self):

pym/bob/scm/imp.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ class ImportScm(Scm):
127127

128128
SCHEMA = schema.Schema({**__SCHEMA, **DEFAULTS})
129129

130+
DEFAULT_VALUES = {
131+
"dir" : ".",
132+
"recipeRelative" : False,
133+
}
134+
130135
def __init__(self, spec, overrides=[], pruneDefault=None, fixDigestBug=False, projectRoot=""):
131136
super().__init__(spec, overrides)
132137
self.__url = spec["url"]
@@ -142,7 +147,7 @@ def _getSrcDir(self):
142147
return os.path.join(rootDir, self.__url)
143148

144149
def getProperties(self, isJenkins, pretty=False):
145-
ret = super().getProperties(isJenkins)
150+
ret = super().getProperties(isJenkins, pretty)
146151
ret.update({
147152
'scm' : 'import',
148153
'url' : self.__url,
@@ -152,8 +157,13 @@ def getProperties(self, isJenkins, pretty=False):
152157
})
153158
if isJenkins:
154159
ret['__data'] = packTree(self._getSrcDir())
155-
else:
160+
elif not pretty:
156161
ret['__projectRoot'] = self.__projectRoot
162+
163+
if pretty:
164+
ret = { k : v for k, v in ret.items()
165+
if v is not None and v != self.DEFAULT_VALUES.get(k) }
166+
157167
return ret
158168

159169
async def invoke(self, invoker):

pym/bob/scm/scm.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,13 +237,15 @@ def _getRecipe(self):
237237
def getSource(self):
238238
return self.__source
239239

240-
def getProperties(self, isJenkins):
240+
def getProperties(self, isJenkins, pretty):
241241
# XXX: keep in sync with SYNTHETIC_SCM_PROPS
242-
return {
243-
"__source" : self.__source,
242+
ret = {
244243
"recipe" : self.__recipe,
245244
"overridden" : bool(self.__overrides),
246245
}
246+
if not pretty:
247+
ret["__source"] = self.__source
248+
return ret
247249

248250
@abstractmethod
249251
async def invoke(self, invoker):

pym/bob/scm/svn.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ class SvnScm(Scm):
4343
**__DEFAULTS,
4444
})
4545

46+
DEFAULT_VALUES = {
47+
"dir" : ".",
48+
"sslVerify" : True,
49+
}
50+
4651
def __init__(self, spec, overrides=[]):
4752
super().__init__(spec, overrides)
4853
self.__url = spec["url"]
@@ -51,7 +56,7 @@ def __init__(self, spec, overrides=[]):
5156
self.__sslVerify = spec.get('sslVerify', True)
5257

5358
def getProperties(self, isJenkins, pretty=False):
54-
ret = super().getProperties(isJenkins)
59+
ret = super().getProperties(isJenkins, pretty)
5560
ret.update({
5661
'scm' : 'svn',
5762
"url" : self.__url,
@@ -60,6 +65,11 @@ def getProperties(self, isJenkins, pretty=False):
6065
})
6166
if self.__revision:
6267
ret["revision"] = self.__revision
68+
69+
if pretty:
70+
ret = { k : v for k, v in ret.items()
71+
if v is not None and v != self.DEFAULT_VALUES.get(k) }
72+
6373
return ret
6474

6575
async def invoke(self, invoker):

pym/bob/scm/url.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,13 @@ class UrlScm(Scm):
351351
"zip" : ZipExtractor,
352352
}
353353

354+
DEFAULT_VALUES = {
355+
"dir" : ".",
356+
"extract" : "auto",
357+
"stripComponents" : 0,
358+
"sslVerify" : True,
359+
}
360+
354361
def __init__(self, spec, overrides=[], stripUser=None,
355362
preMirrors=[], fallbackMirrors=[], defaultFileMode=None,
356363
separateDownload=False):
@@ -395,7 +402,7 @@ def __init__(self, spec, overrides=[], stripUser=None,
395402
self.__separateDownload = spec.get("__separateDownload", separateDownload)
396403

397404
def getProperties(self, isJenkins, pretty=False):
398-
ret = super().getProperties(isJenkins)
405+
ret = super().getProperties(isJenkins, pretty)
399406
ret.update({
400407
'scm' : 'url',
401408
'url' : self.__url,
@@ -409,12 +416,20 @@ def getProperties(self, isJenkins, pretty=False):
409416
'sslVerify' : self.__sslVerify,
410417
'retries' : self.__retries,
411418
'preMirrors' : self.__getPreMirrorsUrls(),
412-
'__preMirrorsUpload' : self.__getPreMirrorsUpload(),
413419
'fallbackMirrors' : self.__getFallbackMirrorsUrls(),
414-
'__fallbackMirrorsUpload' : self.__getFallbackMirrorsUpload(),
415420
'fileMode' : dumpMode(self.__fileMode) if pretty else self.__fileMode,
416-
'__separateDownload': self.__separateDownload,
417421
})
422+
if not pretty:
423+
ret.update({
424+
'__preMirrorsUpload' : self.__getPreMirrorsUpload(),
425+
'__fallbackMirrorsUpload' : self.__getFallbackMirrorsUpload(),
426+
'__separateDownload': self.__separateDownload,
427+
})
428+
429+
if pretty:
430+
ret = { k : v for k, v in ret.items()
431+
if v is not None and v != self.DEFAULT_VALUES.get(k) }
432+
418433
return ret
419434

420435
def __applyMirrors(self, mirrors):

0 commit comments

Comments
 (0)