Mercurial > hg-stable
annotate mercurial/configitems.py @ 33182:21383dbb3611
configitems: register the 'auth.cookiefile' config
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 30 Jun 2017 03:27:18 +0200 |
parents | 95c57596b380 |
children | 640a0760e666 |
rev | line source |
---|---|
33001
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
1 # configitems.py - centralized declaration of configuration option |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 # |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
3 # Copyright 2017 Pierre-Yves David <pierre-yves.david@octobus.net> |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
4 # |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
7 |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 |
33138
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
10 import functools |
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
11 |
33002
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
12 from . import ( |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
13 error, |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
14 ) |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
15 |
33139
c467d13334ee
configitems: add an official API for extensions to register config item
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33138
diff
changeset
|
16 def loadconfigtable(ui, extname, configtable): |
c467d13334ee
configitems: add an official API for extensions to register config item
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33138
diff
changeset
|
17 """update config item known to the ui with the extension ones""" |
c467d13334ee
configitems: add an official API for extensions to register config item
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33138
diff
changeset
|
18 for section, items in configtable.items(): |
33140
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
19 knownitems = ui._knownconfig.setdefault(section, {}) |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
20 knownkeys = set(knownitems) |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
21 newkeys = set(items) |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
22 for key in sorted(knownkeys & newkeys): |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
23 msg = "extension '%s' overwrite config item '%s.%s'" |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
24 msg %= (extname, section, key) |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
25 ui.develwarn(msg, config='warn-config') |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
26 |
bf1292c057ef
configitems: add a devel warning for extensions items overiding core one
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33139
diff
changeset
|
27 knownitems.update(items) |
33139
c467d13334ee
configitems: add an official API for extensions to register config item
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33138
diff
changeset
|
28 |
33001
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
29 class configitem(object): |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
30 """represent a known config item |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
31 |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
32 :section: the official config section where to find this item, |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
33 :name: the official name within the section, |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
34 :default: default value for this item, |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
35 """ |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
36 |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
37 def __init__(self, section, name, default=None): |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
38 self.section = section |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
39 self.name = name |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
40 self.default = default |
33002
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
41 |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
42 coreitems = {} |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
43 |
33138
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
44 def _register(configtable, *args, **kwargs): |
33002
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
45 item = configitem(*args, **kwargs) |
33138
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
46 section = configtable.setdefault(item.section, {}) |
33002
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
47 if item.name in section: |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
48 msg = "duplicated config item registration for '%s.%s'" |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
49 raise error.ProgrammingError(msg % (item.section, item.name)) |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33001
diff
changeset
|
50 section[item.name] = item |
33004
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33002
diff
changeset
|
51 |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33002
diff
changeset
|
52 # Registering actual config items |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33002
diff
changeset
|
53 |
33138
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
54 def getitemregister(configtable): |
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
55 return functools.partial(_register, configtable) |
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
56 |
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
57 coreconfigitem = getitemregister(coreitems) |
c2ca511c4771
configitems: extract the logic to build a registrar on any configtable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33073
diff
changeset
|
58 |
33182
21383dbb3611
configitems: register the 'auth.cookiefile' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33181
diff
changeset
|
59 coreconfigitem('auth', 'cookiefile', |
21383dbb3611
configitems: register the 'auth.cookiefile' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33181
diff
changeset
|
60 default=None, |
21383dbb3611
configitems: register the 'auth.cookiefile' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33181
diff
changeset
|
61 ) |
33181
95c57596b380
configitems: register the 'color.mode' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33179
diff
changeset
|
62 coreconfigitem('color', 'mode', |
95c57596b380
configitems: register the 'color.mode' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33179
diff
changeset
|
63 default='auto', |
95c57596b380
configitems: register the 'color.mode' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33179
diff
changeset
|
64 ) |
33164
cb7140e230c8
config: register the 'devel.all-warnings' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33156
diff
changeset
|
65 coreconfigitem('devel', 'all-warnings', |
cb7140e230c8
config: register the 'devel.all-warnings' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33156
diff
changeset
|
66 default=False, |
cb7140e230c8
config: register the 'devel.all-warnings' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33156
diff
changeset
|
67 ) |
33165
0224820688ac
config: register the 'devel.bundle2.debug' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33164
diff
changeset
|
68 coreconfigitem('devel', 'bundle2.debug', |
0224820688ac
config: register the 'devel.bundle2.debug' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33164
diff
changeset
|
69 default=False, |
0224820688ac
config: register the 'devel.bundle2.debug' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33164
diff
changeset
|
70 ) |
33166
12aaade1f617
config: register the devel.check-locks config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33165
diff
changeset
|
71 coreconfigitem('devel', 'check-locks', |
12aaade1f617
config: register the devel.check-locks config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33165
diff
changeset
|
72 default=False, |
12aaade1f617
config: register the devel.check-locks config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33165
diff
changeset
|
73 ) |
33167
b1cf9bb8a5a2
config: register the 'devel.check-relroot' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33166
diff
changeset
|
74 coreconfigitem('devel', 'check-relroot', |
b1cf9bb8a5a2
config: register the 'devel.check-relroot' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33166
diff
changeset
|
75 default=False, |
b1cf9bb8a5a2
config: register the 'devel.check-relroot' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33166
diff
changeset
|
76 ) |
33168
1ad6d6cee9eb
config: register the 'devel.disableloaddefaultcerts' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33167
diff
changeset
|
77 coreconfigitem('devel', 'disableloaddefaultcerts', |
1ad6d6cee9eb
config: register the 'devel.disableloaddefaultcerts' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33167
diff
changeset
|
78 default=False, |
1ad6d6cee9eb
config: register the 'devel.disableloaddefaultcerts' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33167
diff
changeset
|
79 ) |
33169
1969adf2139a
config: register the 'devel.servercafile' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33168
diff
changeset
|
80 coreconfigitem('devel', 'servercafile', |
1969adf2139a
config: register the 'devel.servercafile' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33168
diff
changeset
|
81 default='', |
1969adf2139a
config: register the 'devel.servercafile' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33168
diff
changeset
|
82 ) |
33170
f15850eff735
config: register the 'devel.serverexactprotocol' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33169
diff
changeset
|
83 coreconfigitem('devel', 'serverexactprotocol', |
f15850eff735
config: register the 'devel.serverexactprotocol' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33169
diff
changeset
|
84 default='', |
f15850eff735
config: register the 'devel.serverexactprotocol' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33169
diff
changeset
|
85 ) |
33171
1a6f28439135
config: register the 'devel.serverrequirecert' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33170
diff
changeset
|
86 coreconfigitem('devel', 'serverrequirecert', |
33179
be723e2afd3d
configitem: fix default value for 'serverrequirecert'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33172
diff
changeset
|
87 default=False, |
33171
1a6f28439135
config: register the 'devel.serverrequirecert' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33170
diff
changeset
|
88 ) |
33172
5c9ad50fd62f
config: register the 'devel.strip-obsmarkers' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33171
diff
changeset
|
89 coreconfigitem('devel', 'strip-obsmarkers', |
5c9ad50fd62f
config: register the 'devel.strip-obsmarkers' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33171
diff
changeset
|
90 default=True, |
5c9ad50fd62f
config: register the 'devel.strip-obsmarkers' config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33171
diff
changeset
|
91 ) |
33006
1d5d7e2b7ab5
configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33004
diff
changeset
|
92 coreconfigitem('patch', 'fuzz', |
1d5d7e2b7ab5
configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33004
diff
changeset
|
93 default=2, |
1d5d7e2b7ab5
configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33004
diff
changeset
|
94 ) |
33007
03608e8d09e9
configitems: register 'ui.clonebundleprefers' as example for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33006
diff
changeset
|
95 coreconfigitem('ui', 'clonebundleprefers', |
33156
77e666f943a6
configitems: support callable as a default value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33140
diff
changeset
|
96 default=list, |
33007
03608e8d09e9
configitems: register 'ui.clonebundleprefers' as example for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33006
diff
changeset
|
97 ) |
33073
c41cbe98822c
configitems: register 'ui.interactive'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33007
diff
changeset
|
98 coreconfigitem('ui', 'interactive', |
c41cbe98822c
configitems: register 'ui.interactive'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33007
diff
changeset
|
99 default=None, |
c41cbe98822c
configitems: register 'ui.interactive'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33007
diff
changeset
|
100 ) |
33004
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33002
diff
changeset
|
101 coreconfigitem('ui', 'quiet', |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33002
diff
changeset
|
102 default=False, |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
33002
diff
changeset
|
103 ) |