diff --git a/simple_backup/simple_backup.py b/simple_backup/simple_backup.py index 4f4c199..977f951 100755 --- a/simple_backup/simple_backup.py +++ b/simple_backup/simple_backup.py @@ -652,9 +652,6 @@ def _detect_user() -> Optional[str]: def _parse_arguments() -> argparse.Namespace: - user = _detect_user() - homedir = os.path.expanduser(f'~{user}') - parser = argparse.ArgumentParser(prog='simple_backup', description='Simple backup script written in Python that uses rsync to copy files', epilog='See simple_backup(1) manpage for full documentation', @@ -662,7 +659,7 @@ def _parse_arguments() -> argparse.Namespace: parser.add_argument('-v', '--verbose', action='store_true', help='More verbose output') - parser.add_argument('-c', '--config', default=f'{homedir}/.config/simple_backup/simple_backup.conf', + parser.add_argument('-c', '--config', default='~/.config/simple_backup/simple_backup.conf', help='Specify location of configuration file') parser.add_argument('-i', '--inputs', nargs='+', help='Paths/files to backup') @@ -896,8 +893,16 @@ def simple_backup() -> int: except NameError: pass + config_file = args.config + + # Expand '~' to the home of the user running the backup, not root's + if config_file.startswith('~/') and user is not None: + config_file = f'~{user}{config_file[1:]}' + + config_file = os.path.expanduser(config_file) + try: - config_args = _read_config(args.config, user) + config_args = _read_config(config_file, user) except (configparser.NoSectionError, configparser.NoOptionError): logger.critical('Bad configuration file')