Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/configuration/rcutil.py @ 52451:91f22b89ea05
config: type `rcutil`
It helps to understand what is going on here and catch future errors.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 22 Oct 2024 17:23:28 +0200 |
parents | 0a81f3ef054c |
children | 0b791c90280a |
comparison
equal
deleted
inserted
replaced
52450:04c3fb885fb6 | 52451:91f22b89ea05 |
---|---|
6 # GNU General Public License version 2 or any later version. | 6 # GNU General Public License version 2 or any later version. |
7 | 7 |
8 from __future__ import annotations | 8 from __future__ import annotations |
9 | 9 |
10 import os | 10 import os |
11 | |
12 from typing import ( | |
13 Dict, | |
14 List, | |
15 Optional, | |
16 Tuple, | |
17 Union, | |
18 ) | |
11 | 19 |
12 from .. import ( | 20 from .. import ( |
13 encoding, | 21 encoding, |
14 pycompat, | 22 pycompat, |
15 util, | 23 util, |
24 | 32 |
25 fallbackpager = scmplatform.fallbackpager | 33 fallbackpager = scmplatform.fallbackpager |
26 systemrcpath = scmplatform.systemrcpath | 34 systemrcpath = scmplatform.systemrcpath |
27 userrcpath = scmplatform.userrcpath | 35 userrcpath = scmplatform.userrcpath |
28 | 36 |
37 ConfigItemT = Tuple[bytes, bytes, bytes, bytes] | |
38 ResourceIDT = Tuple[bytes, bytes] | |
39 FileRCT = bytes | |
40 ComponentT = Tuple[ | |
41 bytes, | |
42 Union[ | |
43 List[ConfigItemT], | |
44 FileRCT, | |
45 ResourceIDT, | |
46 ], | |
47 ] | |
29 | 48 |
30 def _expandrcpath(path): | 49 |
50 def _expandrcpath(path: bytes) -> List[FileRCT]: | |
31 '''path could be a file or a directory. return a list of file paths''' | 51 '''path could be a file or a directory. return a list of file paths''' |
32 p = util.expandpath(path) | 52 p = util.expandpath(path) |
33 if os.path.isdir(p): | 53 if os.path.isdir(p): |
34 join = os.path.join | 54 join = os.path.join |
35 return sorted( | 55 return sorted( |
36 join(p, f) for f, k in util.listdir(p) if f.endswith(b'.rc') | 56 join(p, f) for f, k in util.listdir(p) if f.endswith(b'.rc') |
37 ) | 57 ) |
38 return [p] | 58 return [p] |
39 | 59 |
40 | 60 |
41 def envrcitems(env=None): | 61 def envrcitems(env: Optional[Dict[bytes, bytes]] = None) -> List[ConfigItemT]: |
42 """Return [(section, name, value, source)] config items. | 62 """Return [(section, name, value, source)] config items. |
43 | 63 |
44 The config items are extracted from environment variables specified by env, | 64 The config items are extracted from environment variables specified by env, |
45 used to override systemrc, but not userrc. | 65 used to override systemrc, but not userrc. |
46 | 66 |
59 continue | 79 continue |
60 result.append((section, configname, env[envname], b'$%s' % envname)) | 80 result.append((section, configname, env[envname], b'$%s' % envname)) |
61 return result | 81 return result |
62 | 82 |
63 | 83 |
64 def default_rc_resources(): | 84 def default_rc_resources() -> List[ResourceIDT]: |
65 """return rc resource IDs in defaultrc""" | 85 """return rc resource IDs in defaultrc""" |
66 rsrcs = resourceutil.contents(b'mercurial.defaultrc') | 86 rsrcs = resourceutil.contents(b'mercurial.defaultrc') |
67 return [ | 87 return [ |
68 (b'mercurial.defaultrc', r) | 88 (b'mercurial.defaultrc', r) |
69 for r in sorted(rsrcs) | 89 for r in sorted(rsrcs) |
70 if resourceutil.is_resource(b'mercurial.defaultrc', r) | 90 if resourceutil.is_resource(b'mercurial.defaultrc', r) |
71 and r.endswith(b'.rc') | 91 and r.endswith(b'.rc') |
72 ] | 92 ] |
73 | 93 |
74 | 94 |
75 def rccomponents(): | 95 def rccomponents() -> List[ComponentT]: |
76 """return an ordered [(type, obj)] about where to load configs. | 96 """return an ordered [(type, obj)] about where to load configs. |
77 | 97 |
78 respect $HGRCPATH. if $HGRCPATH is empty, only .hg/hgrc of current repo is | 98 respect $HGRCPATH. if $HGRCPATH is empty, only .hg/hgrc of current repo is |
79 used. if $HGRCPATH is not set, the platform default will be used. | 99 used. if $HGRCPATH is not set, the platform default will be used. |
80 | 100 |
105 _rccomponents.append(envrc) | 125 _rccomponents.append(envrc) |
106 _rccomponents.extend(normpaths(userrcpath())) | 126 _rccomponents.extend(normpaths(userrcpath())) |
107 return _rccomponents | 127 return _rccomponents |
108 | 128 |
109 | 129 |
110 def defaultpagerenv(): | 130 def defaultpagerenv() -> Dict[bytes, bytes]: |
111 """return a dict of default environment variables and their values, | 131 """return a dict of default environment variables and their values, |
112 intended to be set before starting a pager. | 132 intended to be set before starting a pager. |
113 """ | 133 """ |
114 return {b'LESS': b'FRX', b'LV': b'-c'} | 134 return {b'LESS': b'FRX', b'LV': b'-c'} |
115 | 135 |
116 | 136 |
117 def use_repo_hgrc(): | 137 def use_repo_hgrc() -> bool: |
118 """True if repositories `.hg/hgrc` config should be read""" | 138 """True if repositories `.hg/hgrc` config should be read""" |
119 return b'HGRCSKIPREPO' not in encoding.environ | 139 return b'HGRCSKIPREPO' not in encoding.environ |