[PATCH 01 of 11 V2] scmutil: add a method to convert environment variables to config items

Jun Wu quark at fb.com
Wed Mar 22 07:50:50 UTC 2017


# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1489449998 25200
#      Mon Mar 13 17:06:38 2017 -0700
# Node ID fa1618118c0603dafd8b7afbeab0e95f3e4307b0
# Parent  102f291807c92864a2231e5e925d6cd64783bb59
# Available At https://bitbucket.org/quark-zju/hg-draft
#              hg pull https://bitbucket.org/quark-zju/hg-draft -r fa1618118c06
scmutil: add a method to convert environment variables to config items

We will put this "config generated by environment variables" thing in a
desired layer - ex. above system configs, below user configs.

The method was designed to be reusable if we want more complex layers - like
multiple environment-generated configs; or test environment configs using a
different environ dict.

diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -405,4 +405,18 @@ def osrcpath():
     return path
 
+def envconfig(envlist, env=None):
+    '''[(section, name, value, source)] extracted from environment variables
+
+    envlist is a list of (envname, section, configname)
+    '''
+    if env is None:
+        env = encoding.environ
+    result = []
+    for envname, section, configname in envlist:
+        if envname not in env:
+            continue
+        result.append((section, configname, env[envname], '$%s' % envname))
+    return result
+
 _rcpath = None
 


More information about the Mercurial-devel mailing list