diff -r 1ed57a7dd904 -r 0f8ba0bc1154 mercurial/rcutil.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/rcutil.py Sun Mar 26 20:18:42 2017 -0700 @@ -0,0 +1,64 @@ +# rcutil.py - utilities about config paths, special config sections etc. +# +# Copyright Mercurial Contributors +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. + +from __future__ import absolute_import + +import os + +from . import ( + encoding, + osutil, + pycompat, + util, +) + +if pycompat.osname == 'nt': + from . import scmwindows as scmplatform +else: + from . import scmposix as scmplatform + +systemrcpath = scmplatform.systemrcpath +userrcpath = scmplatform.userrcpath + +def osrcpath(): + '''return default os-specific hgrc search path''' + 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.extend(systemrcpath()) + path.extend(userrcpath()) + path = [os.path.normpath(f) for f in path] + return path + +_rcpath = None + +def rcpath(): + '''return hgrc search path. if env var HGRCPATH is set, use it. + for each item in path, if directory, use files ending in .rc, + else use item. + make HGRCPATH empty to only look in .hg/hgrc of current repo. + if no HGRCPATH, use default os-specific path.''' + global _rcpath + if _rcpath is None: + if 'HGRCPATH' in encoding.environ: + _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) + else: + _rcpath = osrcpath() + return _rcpath