# HG changeset patch # User Jun Wu # Date 2017-03-27 03:46:05 # Node ID 294728f2a908021501bf9fd69dc9f5a21e6d1680 # Parent 448889f9a36c490acaac2edd4916f7fd600e2df3 rcutil: extract rc directory listing logic The logic of listing a ".rc" directory is duplicated in two functions, extract it to a single function to make the code cleaner. diff --git a/mercurial/rcutil.py b/mercurial/rcutil.py --- a/mercurial/rcutil.py +++ b/mercurial/rcutil.py @@ -24,14 +24,20 @@ else: systemrcpath = scmplatform.systemrcpath userrcpath = scmplatform.userrcpath +def _expandrcpath(path): + '''path could be a file or a directory. return a list of file paths''' + p = util.expandpath(path) + if os.path.isdir(p): + join = os.path.join + return [join(p, f) for f, k in osutil.listdir(p) if f.endswith('.rc')] + return [p] + def defaultrcpath(): '''return rc paths in default.d''' path = [] defaultpath = os.path.join(util.datapath, 'default.d') if os.path.isdir(defaultpath): - for f, kind in osutil.listdir(defaultpath): - if f.endswith('.rc'): - path.append(os.path.join(defaultpath, f)) + path = _expandrcpath(defaultpath) return path _rcpath = None @@ -49,13 +55,7 @@ def rcpath(): for p in encoding.environ['HGRCPATH'].split(pycompat.ospathsep): if not p: continue - p = util.expandpath(p) - if os.path.isdir(p): - for f, kind in osutil.listdir(p): - if f.endswith('.rc'): - _rcpath.append(os.path.join(p, f)) - else: - _rcpath.append(p) + _rcpath.extend(_expandrcpath(p)) else: paths = defaultrcpath() + systemrcpath() + userrcpath() _rcpath = pycompat.maplist(os.path.normpath, paths)