From f3579e78af711053fa4977b33edf1de890ac81d9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 22 Apr 2018 20:58:43 +0530 Subject: [PATCH] Make load_config() re-useable --- kitty/config.py | 24 +++++------------------- kitty/config_utils.py | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/kitty/config.py b/kitty/config.py index 525b74b25..80a67e634 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -15,7 +15,7 @@ from contextlib import contextmanager from . import fast_data_types as defines from .config_utils import ( init_config, parse_config_base, positive_float, positive_int, to_bool, - to_color, unit_float + to_color, unit_float, load_config as _load_config ) from .constants import cache_dir, defconf from .fast_data_types import CURSOR_BEAM, CURSOR_BLOCK, CURSOR_UNDERLINE @@ -446,24 +446,6 @@ def merge_configs(defaults, vals): return ans -def load_config(*paths, overrides=None) -> Options: - ans = defaults._asdict() - for path in paths: - if not path: - continue - try: - f = open(path, encoding='utf-8', errors='replace') - except FileNotFoundError: - continue - with f: - vals = parse_config(f) - ans = merge_configs(ans, vals) - if overrides is not None: - vals = parse_config(overrides) - ans = merge_configs(ans, vals) - return Options(ans) - - def build_ansi_color_table(opts: Options = defaults): def as_int(x): @@ -547,3 +529,7 @@ def prepare_config_file_for_editing(): with open(defconf, 'w') as f: f.write(commented_out_default_config()) return defconf + + +def load_config(*paths, overrides=None): + return _load_config(Options, defaults, parse_config, merge_configs, *paths, overrides=overrides) diff --git a/kitty/config_utils.py b/kitty/config_utils.py index 5bb0521a8..d64ace164 100644 --- a/kitty/config_utils.py +++ b/kitty/config_utils.py @@ -117,6 +117,24 @@ def create_options_class(keys): return ans +def load_config(Options, defaults, parse_config, merge_configs, *paths, overrides=None): + ans = defaults._asdict() + for path in paths: + if not path: + continue + try: + f = open(path, encoding='utf-8', errors='replace') + except FileNotFoundError: + continue + with f: + vals = parse_config(f) + ans = merge_configs(ans, vals) + if overrides is not None: + vals = parse_config(overrides) + ans = merge_configs(ans, vals) + return Options(ans) + + def init_config(defaults_path, parse_config): with open(defaults_path, encoding='utf-8', errors='replace') as f: defaults = parse_config(f, check_keys=False)