X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Fconfig.py;h=4645409f9633e09b40d3e15fb985866ac1f3d60f;hp=e19f069f15893c7b296ee95df185e6b34b4e704a;hb=531f568231af56035b61bb196b0e43fa79ff223e;hpb=3c01ba57824a0e03ab038c37f6de27c2cf129f02 diff --git a/rainbowstream/config.py b/rainbowstream/config.py index e19f069..4645409 100644 --- a/rainbowstream/config.py +++ b/rainbowstream/config.py @@ -4,12 +4,16 @@ import os import os.path from collections import OrderedDict -# Regular expression for comments +# Regular expression for comments in config file comment_re = re.compile( '(^)?[^\S\n]*/(?:\*(.*?)\*/[^\S\n]*|/[^\n]*)($)?', re.DOTALL | re.MULTILINE ) +# Config dictionary +c = {} + + def fixup(adict, k, v): """ Fix up a key in json format @@ -17,7 +21,7 @@ def fixup(adict, k, v): for key in adict.keys(): if key == k: adict[key] = v - elif type(adict[key]) is dict: + elif isinstance(adict[key], dict): fixup(adict[key], k, v) @@ -45,8 +49,8 @@ def get_all_config(): '')) + 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('ONLY_LIST', None) + data.pop('IGNORE_LIST', None) return data @@ -67,14 +71,14 @@ def get_config(key): return c[key] -def set_config(key,value): +def set_config(key, value): """ Set a config key with specific value """ # Modify value if value.isdigit(): value = int(value) - if value.lower() == 'True': + elif value.lower() == 'True': value = True elif value.lower() == 'False': value = False @@ -88,7 +92,7 @@ def set_config(key,value): fixup(data, key, value) # Save with open(path, 'w') as out: - json.dump(data, out, indent = 4) + json.dump(data, out, indent=4) os.system('chmod 777 ' + path) @@ -109,38 +113,41 @@ def reload_config(): print('It seems that ~/.rainbow_config.json has wrong format :(') -# Config dictionary -c = {} +def init_config(): + """ + Init configuration + """ + # Load the initial config + config = os.path.dirname( + __file__) + '/colorset/config' + try: + data = load_config(config) + for d in data: + c[d] = data[d] + except: + pass + # Load user's config + rainbow_config = os.environ.get( + 'HOME', + os.environ.get( + 'USERPROFILE', + '')) + os.sep + '.rainbow_config.json' + try: + data = load_config(rainbow_config) + for d in data: + c[d] = data[d] + except: + print('It seems that ~/.rainbow_config.json has wrong format :(') + # Load default theme + theme_file = os.path.dirname( + __file__) + '/colorset/' + c['THEME'] + '.json' + try: + data = load_config(theme_file) + for d in data: + c[d] = data[d] + except: + pass + -# Load the initial config -config = os.path.dirname( - __file__) + '/colorset/config' -try: - data = load_config(config) - for d in data: - c[d] = data[d] -except: - pass - -# Load user's config -rainbow_config = os.environ.get( - 'HOME', - os.environ.get( - 'USERPROFILE', - '')) + os.sep + '.rainbow_config.json' -try: - data = load_config(rainbow_config) - for d in data: - c[d] = data[d] -except: - print('It seems that ~/.rainbow_config.json has wrong format :(') - -# Load default theme -theme_file = os.path.dirname( - __file__) + '/colorset/' + c['THEME'] + '.json' -try: - data = load_config(theme_file) - for d in data: - c[d] = data[d] -except: - pass +# Init config +init_config() \ No newline at end of file