From a8e71259e8f1b8bee68a3f85211517de336008a1 Mon Sep 17 00:00:00 2001 From: vunhat_minh Date: Thu, 7 Aug 2014 12:33:04 +0900 Subject: [PATCH] config fix --- rainbowstream/config.py | 47 ++++++++++++++++++++++------------------ rainbowstream/rainbow.py | 27 ++++++++++++----------- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/rainbowstream/config.py b/rainbowstream/config.py index 2a11d3b..e468c9c 100644 --- a/rainbowstream/config.py +++ b/rainbowstream/config.py @@ -42,26 +42,28 @@ def get_all_config(): """ Get all config """ - path = os.path.expanduser("~") + os.sep + '.rainbow_config.json' - data = load_config(path) - # Hard to set from prompt - data.pop('ONLY_LIST', None) - data.pop('IGNORE_LIST', None) - data.pop('FORMAT', None) - return data + try: + path = os.path.expanduser("~") + os.sep + '.rainbow_config.json' + data = load_config(path) + # Hard to set from prompt + data.pop('ONLY_LIST', None) + data.pop('IGNORE_LIST', None) + data.pop('FORMAT', None) + return data + except: + return [] def get_default_config(key): """ Get default value of a config key """ - path = os.path.dirname( - __file__) + '/colorset/config' try: + path = os.path.dirname(__file__) + '/colorset/config' data = load_config(path) + return data[key] except: - raise Exception('No such config key.') - return data[key] + raise Exception('This config key does not exist in default.') def get_config(key): @@ -82,15 +84,15 @@ def set_config(key, value): value = True elif value.lower() == 'false': value = False - # Fix up + # Update global config + c[key] = value + # Load current user config path = os.path.expanduser("~") + os.sep + '.rainbow_config.json' data = {} try: data = load_config(path) except: - pass - # Update global config - c[key] = value + return # Update config file if key in data: fixup(data, key, value) @@ -107,7 +109,10 @@ def delete_config(key): Delete a config key """ path = os.path.expanduser("~") + os.sep + '.rainbow_config.json' - data = load_config(path) + try: + data = load_config(path) + except: + raise Exception('Config file is messed up.') # Drop key if key in data and key in c: data.pop(key) @@ -128,13 +133,13 @@ def reload_config(): """ Reload config """ - rainbow_config = os.path.expanduser("~") + os.sep + '.rainbow_config.json' - try: + try: + rainbow_config = os.path.expanduser("~") + os.sep + '.rainbow_config.json' data = load_config(rainbow_config) for d in data: c[d] = data[d] except: - print('It seems that ~/.rainbow_config.json has wrong format :(') + raise Exception('Can not reload config file with wrong format.') def init_config(): @@ -156,8 +161,8 @@ def init_config(): data = load_config(rainbow_config) for d in data: c[d] = data[d] - except: - pass + except ValueError as e: + c['USER_JSON_ERROR'] = str(e) # Load default theme theme_file = os.path.dirname( __file__) + '/colorset/' + c['THEME'] + '.json' diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index f67ef18..598d367 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -151,8 +151,7 @@ def init(args): set_config('PREFIX', name) g['original_name'] = name[1:] g['decorated_name'] = lambda x: color_func( - c['DECORATED_NAME'])( - '[' + x + ']: ') + c['DECORATED_NAME'])('[' + x + ']: ') # Theme init files = os.listdir(os.path.dirname(__file__) + '/colorset') themes = [f.split('.')[0] for f in files if f.split('.')[-1] == 'json'] @@ -167,6 +166,7 @@ def init(args): c['message_dict'] = [] # Image on term c['IMAGE_ON_TERM'] = args.image_on_term + set_config('IMAGE_ON_TERM',str(c['IMAGE_ON_TERM'])) def switch(): @@ -1125,17 +1125,16 @@ def config(): value = get_default_config(key) line = ' ' * 2 + green(key) + ': ' + light_magenta(value) printNicely(line) - except: - printNicely( - light_magenta('This config key does not exist in default.')) + except Exception as e: + printNicely(red(e)) # Delete specific config key in config file elif len(g['stuff'].split()) == 2 and g['stuff'].split()[-1] == 'drop': key = g['stuff'].split()[0] try: delete_config(key) printNicely(green('Config key is dropped.')) - except: - printNicely(red('No such config key.')) + except Exception as e: + printNicely(red(e)) # Set specific config elif len(g['stuff'].split()) == 3 and g['stuff'].split()[1] == '=': key = g['stuff'].split()[0] @@ -1149,13 +1148,11 @@ def config(): if key == 'THEME': c['THEME'] = reload_theme(value, c['THEME']) g['decorated_name'] = lambda x: color_func( - c['DECORATED_NAME'])( - '[' + x + ']: ') + c['DECORATED_NAME'])('[' + x + ']: ') + reload_config() printNicely(green('Updated successfully.')) - except: - printNicely(light_magenta('Not valid value.')) - return - reload_config() + except Exception as e: + printNicely(red(e)) else: printNicely(light_magenta('Sorry I can\'s understand.')) @@ -1490,6 +1487,10 @@ def reset(): Reset prefix of line """ if g['reset']: + if c.get('USER_JSON_ERROR'): + printNicely(red('Your ~/.rainbow_config.json is messed up:')) + printNicely(red('>>> ' + c['USER_JSON_ERROR'])) + printNicely('') printNicely(magenta('Need tips ? Type "h" and hit Enter key!')) g['reset'] = False try: -- 2.25.1