summaryrefslogtreecommitdiff
path: root/configshell
diff options
context:
space:
mode:
authorJerome Martin <jxm@risingtidesystems.com>2011-06-04 13:20:03 +0200
committerJerome Martin <jxm@risingtidesystems.com>2011-06-04 13:21:31 +0200
commit6f29a787ceac4b92cfe45762a59bb02787531529 (patch)
tree4bdaad902842521979cb8421c4ac8a32287d4dff /configshell
parent27e6a14de1c3b295803fc1a93996824b040ad7bd (diff)
downloadconfigshell-fb-6f29a787ceac4b92cfe45762a59bb02787531529.tar.gz
Added writable flag to config groups items.
* Only use writable ones for set operations. * Changed a few messages accrodingly. * Display the params [ro] status in 'get GROUP'.
Diffstat (limited to 'configshell')
-rw-r--r--configshell/node.py92
1 files changed, 55 insertions, 37 deletions
diff --git a/configshell/node.py b/configshell/node.py
index 9176647..7085989 100644
--- a/configshell/node.py
+++ b/configshell/node.py
@@ -77,64 +77,65 @@ class ConfigNode(object):
self._configuration_groups['global'] = \
{'tree_round_nodes': \
[self.ui_type_bool,
- 'Tree node display style.'],
+ 'Tree node display style.', True],
'tree_status_mode': \
[self.ui_type_bool,
- 'Whether or not to display status in tree.'],
+ 'Whether or not to display status in tree.', True],
'tree_max_depth': \
[self.ui_type_number,
- 'Maximum depth of displayed node tree.'],
+ 'Maximum depth of displayed node tree.', True],
'tree_show_root': \
[self.ui_type_bool,
- 'Whether or not to disply tree root.'],
+ 'Whether or not to disply tree root.', True],
'color_mode': \
[self.ui_type_bool,
- 'Console color display mode.'],
+ 'Console color display mode.', True],
'loglevel_console': \
[self.ui_type_loglevel,
- 'Log level for messages going to the console.'],
+ 'Log level for messages going to the console.', True],
'loglevel_file': \
[self.ui_type_loglevel,
- 'Log level for messages going to the log file.'],
+ 'Log level for messages going to the log file.', True],
'logfile': \
[self.ui_type_string,
- 'Logfile to use.'],
+ 'Logfile to use.', True],
'color_default': \
[self.ui_type_colordefault,
- 'Default text display color.'],
+ 'Default text display color.', True],
'color_path': \
[self.ui_type_color,
- 'Color to use for path completions'],
+ 'Color to use for path completions', True],
'color_command': \
[self.ui_type_color,
- 'Color to use for command completions.'],
+ 'Color to use for command completions.', True],
'color_parameter': \
[self.ui_type_color,
- 'Color to use for parameter completions.'],
+ 'Color to use for parameter completions.', True],
'color_keyword': \
[self.ui_type_color,
- 'Color to use for keyword completions.'],
+ 'Color to use for keyword completions.', True],
'completions_in_columns': \
[self.ui_type_bool,
'If B{true}, completions are displayed in columns, ' \
- + 'else in lines.'],
+ + 'else in lines.', True],
'prompt_length': \
[self.ui_type_number,
- 'Maximum length of the shell prompt path, 0 means infinite.']
+ 'Maximum length of the shell prompt path, 0 means infinite.',
+ True]
}
if self.prefs['bookmarks'] is None:
@@ -465,16 +466,18 @@ class ConfigNode(object):
''' % ' '.join(self._configuration_groups))
elif not parameter:
if group in self._configuration_groups:
- section = "%s PARAMETERS" % group.upper()
+ section = "%s CONFIG GROUP" % group.upper()
underline1 = ''.ljust(len(section), '=')
parameters = ''
for parameter, param_def \
- in self._configuration_groups[group].iteritems():
- (type_helper, description) = param_def
- parameter += '=I{' + type_helper() + '}'
- underline2 = ''.ljust(len(parameter), '-')
- parameters += '%s\n%s\n%s\n\n' \
- % (parameter, underline2, description)
+ in iter(sorted(
+ self._configuration_groups[group].iteritems())):
+ (type_helper, description, writable) = param_def
+ if writable:
+ parameter += '=I{' + type_helper() + '}'
+ underline2 = ''.ljust(len(parameter), '-')
+ parameters += '%s\n%s\n%s\n\n' \
+ % (parameter, underline2, description)
self.con.epy_write('''%s\n%s\n%s\n''' \
% (section, underline1, parameters))
@@ -484,18 +487,23 @@ class ConfigNode(object):
for param, value in parameter.iteritems():
if param in self._configuration_groups[group]:
type_helper = self._configuration_groups[group][param][0]
- try:
- value = type_helper(value)
- except ValueError, msg:
- self.log.error("Not setting %s! %s" % (param, msg))
+ writable = self._configuration_groups[group][param][2]
+ if writable:
+ try:
+ value = type_helper(value)
+ except ValueError, msg:
+ self.log.error("Not setting %s! %s" % (param, msg))
+ else:
+ group_setter = self.get_group_setter(group)
+ group_setter(param, value)
+ group_getter = self.get_group_getter(group)
+ value = group_getter(param)
+ value = type_helper(value, reverse=True)
+ self.con.display(
+ "Parameter %s has been set to '%s'." \
+ % (param, value))
else:
- group_setter = self.get_group_setter(group)
- group_setter(param, value)
- group_getter = self.get_group_getter(group)
- value = group_getter(param)
- value = type_helper(value, reverse=True)
- self.con.display("Parameter %s has been set to '%s'." \
- % (param, value))
+ self.log.error("Parameter '%s' is read-only." % param)
else:
self.log.error(
"There is no parameter named '%s' in group '%s'." \
@@ -526,7 +534,9 @@ class ConfigNode(object):
elif 'group' in parameters:
group = parameters['group']
if group in self._configuration_groups:
- group_params = self._configuration_groups[group]
+ group_params = [param for param in
+ self._configuration_groups[group]
+ if self._configuration_groups[group][param][2]]
if current_param in group_params:
type_method = group_params[current_param][0]
type_enum = type_method(enum=True)
@@ -571,7 +581,7 @@ class ConfigNode(object):
''' % ' '.join(self._configuration_groups))
elif not parameter:
if group in self._configuration_groups:
- section = "%s PARAMETERS" % group.upper()
+ section = "%s CONFIG GROUP" % group.upper()
underline1 = ''.ljust(len(section), '=')
parameters = ''
params = self._configuration_groups[group].items()
@@ -583,7 +593,10 @@ class ConfigNode(object):
group_params = self._configuration_groups[group]
type_method = group_params[parameter][0]
value = type_method(value, reverse=True)
- parameter = parameter + '=' + value
+ if param_def[2]:
+ parameter = parameter + '=' + value
+ else:
+ parameter = parameter + '=' + value + " [ro]"
underline2 = ''.ljust(len(parameter), '-')
parameters += '%s\n%s\n%s\n\n' \
% (parameter, underline2, description)
@@ -600,8 +613,13 @@ class ConfigNode(object):
value = group_getter(param)
group_params = self._configuration_groups[group]
type_method = group_params[param][0]
+ writable = group_params[param][2]
value = type_method(value, reverse=True)
- self.con.display("%s=%s" % (param, value))
+ if writable:
+ writable = ""
+ else:
+ writable = "[ro]"
+ self.con.display("%s=%s %s" % (param, value, writable))
else:
self.log.error(
"There is no parameter named '%s' in group '%s'." \