From 1209bd94b60cb85c756d937ad9cada69f2428397 Mon Sep 17 00:00:00 2001 From: mathieui Date: Sat, 21 Feb 2015 23:16:52 +0100 Subject: Add a -c/--check-config option to check the config file It displays the missing options and the ones which are changed from the default values. --- src/args.py | 11 +++++++---- src/config.py | 28 ++++++++++++++++++++++++++++ src/poezio.py | 4 ++++ 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/args.py b/src/args.py index 637d3158..a67a0142 100644 --- a/src/args.py +++ b/src/args.py @@ -11,14 +11,17 @@ def parse_args(CONFIG_PATH=''): """ Parse the arguments from the command line """ - parser = ArgumentParser() + parser = ArgumentParser('poezio') + parser.add_argument("-c", "--check-config", dest="check_config", + action='store_true', + help=_('Check the config file')) + parser.add_argument("-d", "--debug", dest="debug", + help=_("The file where debug will be written"), + metavar="DEBUG_FILE") parser.add_argument("-f", "--file", dest="filename", default=path.join(CONFIG_PATH, 'poezio.cfg'), help=_("The config file you want to use"), metavar="CONFIG_FILE") - parser.add_argument("-d", "--debug", dest="debug", - help=_("The file where debug will be written"), - metavar="DEBUG_FILE") parser.add_argument("-v", "--version", dest="version", help=SUPPRESS, metavar="VERSION", default="0.9-dev") diff --git a/src/config.py b/src/config.py index ef5168e1..333809d2 100644 --- a/src/config.py +++ b/src/config.py @@ -522,6 +522,34 @@ def check_create_cache_dir(): except OSError: pass +def check_config(): + """ + Check the config file and print results + """ + result = {'missing': [], 'changed': []} + for option in DEFAULT_CONFIG['Poezio']: + value = config.get(option) + if value != DEFAULT_CONFIG['Poezio'][option]: + result['changed'].append((option, value, DEFAULT_CONFIG['Poezio'][option])) + else: + value = config.get(option, default='') + upper = value.upper() + default = str(DEFAULT_CONFIG['Poezio'][option]).upper() + if upper != default: + result['missing'].append(option) + + result['changed'].sort(key=lambda x: x[0]) + result['missing'].sort() + if result['changed']: + print('\033[1mOptions changed from the default configuration:\033[0m\n') + for option, new_value, default in result['changed']: + print(' \033[1m%s\033[0m = \033[33m%s\033[0m (default: \033[32m%s\033[0m)' % (option, new_value, default)) + + if result['missing']: + print('\n\033[1mMissing options:\033[0m (the defaults are used)\n') + for option in result['missing']: + print(' \033[31m%s\033[0m' % option) + def run_cmdline_args(CONFIG_PATH): "Parse the command line arguments" global options diff --git a/src/poezio.py b/src/poezio.py index 1a5a257e..7a83f510 100644 --- a/src/poezio.py +++ b/src/poezio.py @@ -59,6 +59,10 @@ def main(): from config import options + if options.check_config: + config.check_config() + sys.exit(0) + import theming theming.update_themes_dir() -- cgit v1.2.3