author | Mads Kiilerich <madski@unity3d.com> |
Fri, 14 Oct 2016 03:03:39 +0200 | |
changeset 30156 | 75c71c533977 |
parent 29760 | 3df9f780c90e |
child 30309 | 4b1af1c867fa |
permissions | -rw-r--r-- |
27481
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
1 |
from __future__ import absolute_import |
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
2 |
|
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
3 |
import os |
27481
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
4 |
|
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
5 |
from . import ( |
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
6 |
osutil, |
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
7 |
util, |
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
8 |
) |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
9 |
|
29760
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
10 |
try: |
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
11 |
import _winreg as winreg |
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
12 |
winreg.CloseKey |
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
13 |
except ImportError: |
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
14 |
import winreg |
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
15 |
|
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
16 |
def systemrcpath(): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
17 |
'''return default os-specific hgrc search path''' |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
18 |
rcpath = [] |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
19 |
filename = util.executablepath() |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
20 |
# Use mercurial.ini found in directory with hg.exe |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
21 |
progrc = os.path.join(os.path.dirname(filename), 'mercurial.ini') |
26625
adae8928fe09
windows: read all global config files, not just the first (issue4491) (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22583
diff
changeset
|
22 |
rcpath.append(progrc) |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
23 |
# Use hgrc.d found in directory with hg.exe |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
24 |
progrcd = os.path.join(os.path.dirname(filename), 'hgrc.d') |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
25 |
if os.path.isdir(progrcd): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
26 |
for f, kind in osutil.listdir(progrcd): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
27 |
if f.endswith('.rc'): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
28 |
rcpath.append(os.path.join(progrcd, f)) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
29 |
# else look for a system rcpath in the registry |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
30 |
value = util.lookupreg('SOFTWARE\\Mercurial', None, |
29760
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
31 |
winreg.HKEY_LOCAL_MACHINE) |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
32 |
if not isinstance(value, str) or not value: |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
33 |
return rcpath |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
34 |
value = util.localpath(value) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
35 |
for p in value.split(os.pathsep): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
36 |
if p.lower().endswith('mercurial.ini'): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
37 |
rcpath.append(p) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
38 |
elif os.path.isdir(p): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
39 |
for f, kind in osutil.listdir(p): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
40 |
if f.endswith('.rc'): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
41 |
rcpath.append(os.path.join(p, f)) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
42 |
return rcpath |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
43 |
|
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
44 |
def userrcpath(): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
45 |
'''return os-specific hgrc search path to the user dir''' |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
46 |
home = os.path.expanduser('~') |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
47 |
path = [os.path.join(home, 'mercurial.ini'), |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
48 |
os.path.join(home, '.hgrc')] |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
49 |
userprofile = os.environ.get('USERPROFILE') |
22583
23c995ed466b
config: don't read the same config file twice
Mads Kiilerich <madski@unity3d.com>
parents:
18712
diff
changeset
|
50 |
if userprofile and userprofile != home: |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
51 |
path.append(os.path.join(userprofile, 'mercurial.ini')) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
52 |
path.append(os.path.join(userprofile, '.hgrc')) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
53 |
return path |