diff options
| author | Barry Warsaw | 2015-03-02 21:01:24 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2015-03-02 21:01:24 -0500 |
| commit | e33d6d6b88d0340e7e9adbc8638db306b19e2631 (patch) | |
| tree | 66298ee966545f7737e95587034ff436e79acc1b /port_me/show_config.py | |
| parent | 9ba3450c3acf720f981dc499402e5a2616db2cba (diff) | |
| download | mailman-e33d6d6b88d0340e7e9adbc8638db306b19e2631.tar.gz mailman-e33d6d6b88d0340e7e9adbc8638db306b19e2631.tar.zst mailman-e33d6d6b88d0340e7e9adbc8638db306b19e2631.zip | |
Diffstat (limited to 'port_me/show_config.py')
| -rw-r--r-- | port_me/show_config.py | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/port_me/show_config.py b/port_me/show_config.py new file mode 100644 index 000000000..290840ae3 --- /dev/null +++ b/port_me/show_config.py @@ -0,0 +1,97 @@ +# Copyright (C) 2006-2015 by the Free Software Foundation, Inc. +# +# This file is part of GNU Mailman. +# +# GNU Mailman is free software: you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. + +import re +import sys +import pprint +import optparse + +from mailman.configuration import config +from mailman.core.i18n import _ +from mailman.version import MAILMAN_VERSION + + +# List of names never to show even if --verbose +NEVER_SHOW = ['__builtins__', '__doc__'] + + + +def parseargs(): + parser = optparse.OptionParser(version=MAILMAN_VERSION, + usage=_("""\ +%%prog [options] [pattern ...] + +Show the values of various Defaults.py/mailman.cfg variables. +If one or more patterns are given, show only those variables +whose names match a pattern""")) + parser.add_option('-v', '--verbose', + default=False, action='store_true', + help=_( +"Show all configuration names, not just 'settings'.")) + parser.add_option('-i', '--ignorecase', + default=False, action='store_true', + help=_("Match patterns case-insensitively.")) + parser.add_option('-C', '--config', + help=_('Alternative configuration file to use')) + opts, args = parser.parse_args() + return parser, opts, args + + + +def main(): + parser, opts, args = parseargs() + + patterns = [] + if opts.ignorecase: + flag = re.IGNORECASE + else: + flag = 0 + for pattern in args: + patterns.append(re.compile(pattern, flag)) + + pp = pprint.PrettyPrinter(indent=4) + config.load(opts.config) + names = config.__dict__.keys() + names.sort() + for name in names: + if name in NEVER_SHOW: + continue + if not opts.verbose: + if name.startswith('_') or re.search('[a-z]', name): + continue + if patterns: + hit = False + for pattern in patterns: + if pattern.search(name): + hit = True + break + if not hit: + continue + value = config.__dict__[name] + if isinstance(value, str): + if re.search('\n', value): + print '%s = """%s"""' %(name, value) + else: + print "%s = '%s'" % (name, value) + else: + print '%s = ' % name, + pp.pprint(value) + + + +if __name__ == '__main__': + main() |
