X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Fconfig.py;h=de15655cfe3c0890334a32cb79d46c810bb9ee07;hp=b17a0e2f46734a9a91cb28c2d1d580bffcfe2de1;hb=1f2f615927934706083c9571cd122363a6080956;hpb=9e1f9d5633690fee849e6ce4eb0af5ba112f2576;ds=sidebyside diff --git a/rainbowstream/config.py b/rainbowstream/config.py index b17a0e2..de15655 100644 --- a/rainbowstream/config.py +++ b/rainbowstream/config.py @@ -2,6 +2,7 @@ import json import re import os import os.path +from collections import OrderedDict # Regular expression for comments comment_re = re.compile( @@ -9,7 +10,6 @@ comment_re = re.compile( re.DOTALL | re.MULTILINE ) - def load_config(filepath): """ Load config from filepath @@ -20,34 +20,12 @@ def load_config(filepath): while match: content = content[:match.start()] + content[match.end():] match = comment_re.search(content) - return json.loads(content) + return json.loads(content, object_pairs_hook=OrderedDict) # Config dictionary c = {} -# Load default -default_config = os.path.dirname(__file__) + '/colorset/default.json' -data = load_config(default_config) -for d in data: - c[d] = data[d] -c['theme'] = 'default' -# Load init if exist -try: - path = os.path.dirname(__file__) + '/colorset/init' - f = open(path) - lines = f.readlines() - if len(lines) > 1: - raise Exception('More than 1 default theme') - theme_name = lines[0].strip() - default_config = os.path.dirname( - __file__) + '/colorset/' + theme_name + '.json' - data = load_config(default_config) - for d in data: - c[d] = data[d] - c['theme'] = theme_name - f.close() -except: - pass -# Load user's colorset + +# Load user's config rainbow_config = os.environ.get( 'HOME', os.environ.get( @@ -57,6 +35,15 @@ try: data = load_config(rainbow_config) for d in data: c[d] = data[d] - c['theme'] = 'custom' +except: + pass + +# 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