mercurial/rcutil.py
changeset 31684 0f8ba0bc1154
child 31685 448889f9a36c
--- /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