diff --git a/bibsearch/bibsearch.py b/bibsearch/bibsearch.py index fba2f01..23a0362 100755 --- a/bibsearch/bibsearch.py +++ b/bibsearch/bibsearch.py @@ -676,11 +676,7 @@ def main(): parser = argparse.ArgumentParser(description="bibsearch: Download, manage, and search a BibTeX database.\nUse '%(prog)s man' to get complete help.", formatter_class=SubcommandHelpFormatter) parser.add_argument('--version', '-V', action='version', version='%(prog)s {}'.format(VERSION)) - parser.add_argument('-c', '--config_file', help="use this config file", - default=os.path.join(os.path.expanduser("~"), - '.bibsearch', - "config") - ) + parser.add_argument('-c', '--config_file', help="use this config file") parser.set_defaults(func=lambda *_ : parser.print_help()) subparsers = parser.add_subparsers(title="commands", description="Use '%(prog)s -h' to obtain additional help.", diff --git a/bibsearch/config.py b/bibsearch/config.py index 453593b..1679148 100644 --- a/bibsearch/config.py +++ b/bibsearch/config.py @@ -34,6 +34,8 @@ def __init__(self, config_file: str = None): config.read_dict(self.__class__.defaults) # Override those defaults from the config file + if config_file is None: + config_file = self._check_for_existing_config() config.read(config_file) # Make available as member variables @@ -45,6 +47,17 @@ def __init__(self, config_file: str = None): self.macros = config["macros"] + @classmethod + def _check_for_existing_config(cls): + # the default if XDG_CONFIG_HOME isn't set is ~/.config + xdg_config_home = os.environ.get("XDG_CONFIG_HOME") or os.path.expanduser("~/.config") + # check there for a config file + if os.path.exists(os.path.join(xdg_config_home, "bibsearch/config")): + config_file = os.path.join(xdg_config_home, "bibsearch/config") + # otherwise, use ~/.bibsearch/config + config_file = os.path.expanduser("~/.bibsearch/config") + return config_file + @classmethod def get_default(cls, key: str) -> str: return cls.defaults['bibsearch'][key]