Source code for remodeler.cli.run_remodel_backup
"""Command-line program for creating a remodeler backup."""
import argparse
from hed.errors.exceptions import HedFileError
from hed.tools.util import io_util
from remodeler.backup_manager import BackupManager
[docs]
def get_parser():
"""Create a parser for the run_remodel_backup command-line arguments.
Returns:
argparse.ArgumentParser: A parser for parsing the command line arguments.
"""
parser = argparse.ArgumentParser(description="Creates a backup for the remodeling process.")
parser.add_argument("data_dir", help="Full path of dataset root directory.")
parser.add_argument(
"-bd", "--backup_dir", default="", dest="backup_dir", help="Directory for the backup that is being created"
)
parser.add_argument(
"-bn",
"--backup-name",
default=BackupManager.DEFAULT_BACKUP_NAME,
dest="backup_name",
help="Name of the default backup for remodeling",
)
parser.add_argument(
"-fs",
"--file-suffix",
dest="suffixes",
nargs="*",
default=["events"],
help="Optional list of suffixes (no under_bar) of tsv files to be backed up. A * indicates all files allowed.",
)
parser.add_argument("-t", "--task-names", dest="task_names", nargs="*", default=[], help="The names of the tasks.")
parser.add_argument(
"-v", "--verbose", action="store_true", help="If present, output informative messages as computation progresses."
)
parser.add_argument(
"-x",
"--exclude-dirs",
nargs="*",
default=["derivatives"],
dest="exclude_dirs",
help="Directories names to exclude from search for files. "
+ "If omitted, no directories except the backup directory will be excluded."
+ "Note [data_root]/derivatives/remodel will always be excluded.",
)
return parser
[docs]
def main(arg_list=None):
"""The command-line program for making a remodel backup.
Parameters:
arg_list (list or None): Called with value None when called from the command line.
Otherwise, called with the command-line parameters as an argument list.
Raises:
HedFileError: If the specified backup already exists.
"""
parser = get_parser()
args = parser.parse_args(arg_list)
if "*" in args.suffixes:
args.suffixes = None
exclude_dirs = args.exclude_dirs + ["remodeling"]
file_list = io_util.get_file_list(args.data_dir, name_suffix=args.suffixes, extensions=[".tsv"], exclude_dirs=exclude_dirs)
if args.task_names:
file_list = io_util.get_filtered_by_element(file_list, args.task_names)
if args.backup_dir:
backups_root = args.backup_dir
else:
backups_root = None
backup_man = BackupManager(args.data_dir, backups_root=backups_root)
if backup_man.get_backup(args.backup_name):
raise HedFileError("BackupExists", f"Backup {args.backup_name} already exists", "")
else:
backup_man.create_backup(file_list, backup_name=args.backup_name, verbose=args.verbose)
if __name__ == "__main__":
main()