author | Augie Fackler <augie@google.com> |
Thu, 05 Dec 2019 11:15:19 -0500 | |
changeset 43811 | 29adf0a087a1 |
parent 43788 | fe73ec69350e |
parent 43453 | a50fecefa691 |
child 43929 | 9a3ac902d597 |
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 ( |
30642
344e68882cd3
py3: replace os.environ with encoding.environ (part 4 of 5)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30617
diff
changeset
|
6 |
encoding, |
30617
d623cc6b3742
py3: replace os.pathsep with pycompat.ospathsep
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30327
diff
changeset
|
7 |
pycompat, |
27481
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
8 |
util, |
30322
4b1af1c867fa
scmutil: move util.termwidth()
Yuya Nishihara <yuya@tcha.org>
parents:
29772
diff
changeset
|
9 |
win32, |
27481
029f02757c20
scmwindows: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26625
diff
changeset
|
10 |
) |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
11 |
|
29772
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
12 |
try: |
43788
fe73ec69350e
windows: suppress pytype warnings for Windows imports and functions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
13 |
import _winreg as winreg # pytype: disable=import-error |
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
37098
diff
changeset
|
14 |
|
29772
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
15 |
winreg.CloseKey |
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
16 |
except ImportError: |
43788
fe73ec69350e
windows: suppress pytype warnings for Windows imports and functions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
17 |
# py2 only |
fe73ec69350e
windows: suppress pytype warnings for Windows imports and functions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
18 |
import winreg # pytype: disable=import-error |
29772
3df9f780c90e
py3: conditionalize _winreg import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27481
diff
changeset
|
19 |
|
32078
bf5e13e38390
pager: use less as a fallback on Unix
Yuya Nishihara <yuya@tcha.org>
parents:
30642
diff
changeset
|
20 |
# MS-DOS 'more' is the only pager available by default on Windows. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
21 |
fallbackpager = b'more' |
32078
bf5e13e38390
pager: use less as a fallback on Unix
Yuya Nishihara <yuya@tcha.org>
parents:
30642
diff
changeset
|
22 |
|
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
37098
diff
changeset
|
23 |
|
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
24 |
def systemrcpath(): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
25 |
'''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
|
26 |
rcpath = [] |
37098
e24802ea8dbd
rcutil: directly call win32.executablepath()
Yuya Nishihara <yuya@tcha.org>
parents:
32248
diff
changeset
|
27 |
filename = win32.executablepath() |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
28 |
# Use mercurial.ini found in directory with hg.exe |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
29 |
progrc = os.path.join(os.path.dirname(filename), b'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
|
30 |
rcpath.append(progrc) |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
31 |
# Use hgrc.d found in directory with hg.exe |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
32 |
progrcd = os.path.join(os.path.dirname(filename), b'hgrc.d') |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
33 |
if os.path.isdir(progrcd): |
32248
d74b0cff94a9
osutil: proxy through util (and platform) modules (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32078
diff
changeset
|
34 |
for f, kind in util.listdir(progrcd): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
35 |
if f.endswith(b'.rc'): |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
36 |
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
|
37 |
# else look for a system rcpath in the registry |
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
37098
diff
changeset
|
38 |
value = util.lookupreg( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
39 |
b'SOFTWARE\\Mercurial', None, winreg.HKEY_LOCAL_MACHINE |
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
37098
diff
changeset
|
40 |
) |
43453
a50fecefa691
windows: fix an issue causing registry config paths to be ignored on py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
41 |
if not isinstance(value, bytes) or not value: |
18690
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 |
value = util.localpath(value) |
30617
d623cc6b3742
py3: replace os.pathsep with pycompat.ospathsep
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30327
diff
changeset
|
44 |
for p in value.split(pycompat.ospathsep): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
45 |
if p.lower().endswith(b'mercurial.ini'): |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
46 |
rcpath.append(p) |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
47 |
elif os.path.isdir(p): |
32248
d74b0cff94a9
osutil: proxy through util (and platform) modules (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32078
diff
changeset
|
48 |
for f, kind in util.listdir(p): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
49 |
if f.endswith(b'.rc'): |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
50 |
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
|
51 |
return rcpath |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
52 |
|
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
37098
diff
changeset
|
53 |
|
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
54 |
def userrcpath(): |
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
55 |
'''return os-specific hgrc search path to the user dir''' |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
56 |
home = os.path.expanduser(b'~') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
57 |
path = [os.path.join(home, b'mercurial.ini'), os.path.join(home, b'.hgrc')] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
58 |
userprofile = encoding.environ.get(b'USERPROFILE') |
22583
23c995ed466b
config: don't read the same config file twice
Mads Kiilerich <madski@unity3d.com>
parents:
18712
diff
changeset
|
59 |
if userprofile and userprofile != home: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
60 |
path.append(os.path.join(userprofile, b'mercurial.ini')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
61 |
path.append(os.path.join(userprofile, b'.hgrc')) |
18690
4c6f7f0dadab
scmutil: split platform-specific bits into their own modules
Kevin Bullock <kbullock@ringworld.org>
parents:
diff
changeset
|
62 |
return path |
30322
4b1af1c867fa
scmutil: move util.termwidth()
Yuya Nishihara <yuya@tcha.org>
parents:
29772
diff
changeset
|
63 |
|
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
37098
diff
changeset
|
64 |
|
30327
365812902904
scmutil: extend termwidth() to return terminal height, renamed to termsize()
Yuya Nishihara <yuya@tcha.org>
parents:
30323
diff
changeset
|
65 |
def termsize(ui): |
365812902904
scmutil: extend termwidth() to return terminal height, renamed to termsize()
Yuya Nishihara <yuya@tcha.org>
parents:
30323
diff
changeset
|
66 |
return win32.termsize() |