summaryrefslogtreecommitdiff
path: root/src/mailman/commands/cli_conf.py
diff options
context:
space:
mode:
authorBarry Warsaw2013-09-01 11:08:46 -0400
committerBarry Warsaw2013-09-01 11:08:46 -0400
commit6644023236f207652519a430109a1f6f2893370f (patch)
treefa21f2513e1b83f3ddf42f826e6a4d1e44804036 /src/mailman/commands/cli_conf.py
parent23d3a966b7aa7f1dacf826b61ec094c57c9ac07d (diff)
parent483f8861e2fb546f85191aa618152929328b175a (diff)
downloadmailman-6644023236f207652519a430109a1f6f2893370f.tar.gz
mailman-6644023236f207652519a430109a1f6f2893370f.tar.zst
mailman-6644023236f207652519a430109a1f6f2893370f.zip
Diffstat (limited to 'src/mailman/commands/cli_conf.py')
-rw-r--r--src/mailman/commands/cli_conf.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/mailman/commands/cli_conf.py b/src/mailman/commands/cli_conf.py
index 1f8095d92..dfa741e3a 100644
--- a/src/mailman/commands/cli_conf.py
+++ b/src/mailman/commands/cli_conf.py
@@ -65,10 +65,20 @@ class Conf:
key-values pair from any section matching the given key will be
displayed.
"""))
+ command_parser.add_argument(
+ '-t', '--sort',
+ default=False, action='store_true',
+ help=_('Sort the output by sections and keys.'))
def _get_value(self, section, key):
return getattr(getattr(config, section), key)
+ def _sections(self, sort_p):
+ sections = config.schema._section_schemas
+ if sort_p:
+ sections = sorted(sections)
+ return sections
+
def _print_full_syntax(self, section, key, value, output):
print('[{}] {}: {}'.format(section, key, value), file=output)
@@ -78,8 +88,10 @@ class Conf:
def _show_section_error(self, section):
self.parser.error('No such section: {}'.format(section))
- def _print_values_for_section(self, section, output):
+ def _print_values_for_section(self, section, output, sort_p):
current_section = getattr(config, section)
+ if sort_p:
+ current_section = sorted(current_section)
for key in current_section:
self._print_full_syntax(section, key,
self._get_value(section, key), output)
@@ -94,6 +106,7 @@ class Conf:
# Process the command, ignoring the closing of the output file.
section = args.section
key = args.key
+ sort_p = args.sort
# Case 1: Both section and key are given, so we can directly look up
# the value.
if section is not None and key is not None:
@@ -106,12 +119,12 @@ class Conf:
# Case 2: Section is given, key is not given.
elif section is not None and key is None:
if self._section_exists(section):
- self._print_values_for_section(section, output)
+ self._print_values_for_section(section, output, sort_p)
else:
self._show_section_error(section)
# Case 3: Section is not given, key is given.
elif section is None and key is not None:
- for current_section in config.schema._section_schemas:
+ for current_section in self._sections(sort_p):
# We have to ensure that the current section actually exists
# and that it contains the given key.
if (self._section_exists(current_section) and
@@ -124,12 +137,13 @@ class Conf:
# Case 4: Neither section nor key are given, just display all the
# sections and their corresponding key/value pairs.
elif section is None and key is None:
- for current_section in config.schema._section_schemas:
+ for current_section in self._sections(sort_p):
# However, we have to make sure that the current sections and
# key which are being looked up actually exist before trying
# to print them.
if self._section_exists(current_section):
- self._print_values_for_section(current_section, output)
+ self._print_values_for_section(
+ current_section, output, sort_p)
def process(self, args):
"""See `ICLISubCommand`."""