def run_backup(repo_name: str, prefix: str, paths: List[str], verify=True, verbose=False) -> None: """Perform a backup to the repository of all dirs/files in the list. Make sure we have an unlocked DDU repository. Process all items in 'paths'. If an item is '-', read path names from stdin. """ logging.info(f"backup list: {paths}") logging.info(f"backup repo: {repo_name}") print(f"Backing up to {repo_name} with prefix '{prefix}'.") repos = Repo(repo_name) if repos.lock(): bkup = Backup(repo_name, prefix, verbose=verbose) for g in paths: if g == '-': for f in sys.stdin: if not f: continue f = f.rstrip() if os.path.isfile(f) or os.path.isdir(f): bkup.backup_object(f) else: util.warning(f'{f} is not a file or directory') else: if util.os_is_windows: # You have to use globbing on Windows. Shell is too stupid. path_list = glob.glob(g) if path_list == []: util.warning(f'File/dir {g} not found.') else: for f in glob.glob(g): bkup.backup_object(f) else: bkup.backup_object(g) bkup.finish() repos.unlock() if verify: repos.verify_backups(only=bkup.bk_name) else: util.fatal(f'repo {repo_name} is LOCKED')