author | Martin von Zweigbergk <martinvonz@google.com> |
Thu, 22 Jun 2017 15:59:07 -0700 | |
changeset 33038 | f0efd2bffe1e |
parent 32991 | 03608e8d09e9 |
child 33061 | c41cbe98822c |
permissions | -rw-r--r-- |
32983
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 |
|
32984
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
10 |
from . import ( |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
11 |
error, |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
12 |
) |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
13 |
|
32983
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 |
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
|
15 |
"""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
|
16 |
|
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 |
: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
|
18 |
: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
|
19 |
: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
|
20 |
""" |
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 |
|
0d757af1ea67
configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
22 |
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
|
23 |
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
|
24 |
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
|
25 |
self.default = default |
32984
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
26 |
|
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
27 |
coreitems = {} |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
28 |
|
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
29 |
def coreconfigitem(*args, **kwargs): |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
30 |
item = configitem(*args, **kwargs) |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
31 |
section = coreitems.setdefault(item.section, {}) |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
32 |
if item.name in section: |
6d983e8af49c
configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32983
diff
changeset
|
33 |
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:
32983
diff
changeset
|
34 |
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:
32983
diff
changeset
|
35 |
section[item.name] = item |
32986
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32984
diff
changeset
|
36 |
|
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32984
diff
changeset
|
37 |
# Registering actual config items |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32984
diff
changeset
|
38 |
|
32990
1d5d7e2b7ab5
configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32986
diff
changeset
|
39 |
coreconfigitem('patch', 'fuzz', |
1d5d7e2b7ab5
configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32986
diff
changeset
|
40 |
default=2, |
1d5d7e2b7ab5
configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32986
diff
changeset
|
41 |
) |
32991
03608e8d09e9
configitems: register 'ui.clonebundleprefers' as example for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32990
diff
changeset
|
42 |
coreconfigitem('ui', 'clonebundleprefers', |
03608e8d09e9
configitems: register 'ui.clonebundleprefers' as example for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32990
diff
changeset
|
43 |
default=[], |
03608e8d09e9
configitems: register 'ui.clonebundleprefers' as example for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32990
diff
changeset
|
44 |
) |
32986
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32984
diff
changeset
|
45 |
coreconfigitem('ui', 'quiet', |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32984
diff
changeset
|
46 |
default=False, |
2529e2ae9f4c
configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
32984
diff
changeset
|
47 |
) |