Source code for deriva.transfer.backup.deriva_backup_cli

import os
import sys
import json
import traceback
import argparse
from deriva.core import BaseCLI, KeyValuePairArgs, format_credential, format_exception, urlparse
from deriva.transfer import DerivaBackup, DerivaDownloadCLI


[docs]class DerivaBackupCLI(DerivaDownloadCLI): def __init__(self, description, epilog, **kwargs): DerivaDownloadCLI.__init__(self, description, epilog, **kwargs) mutex_group = self.parser.add_mutually_exclusive_group() mutex_group.add_argument("--no-data", action="store_true", help="Do not export data, export schema only.") mutex_group.add_argument("--no-schema", action="store_true", help="Do not export schema, export data only.") bag_mutex_group = self.parser.add_mutually_exclusive_group() bag_mutex_group.add_argument("--no-bag", action="store_true", help="Do not store the output in a bag container.") bag_mutex_group.add_argument("--include-assets", choices=['full', 'references'], help="Include related file assets in output bag. Use \"full\" to download " "related assets to the output bag. Use \"references\" to store " "references to asset files in the bag's \"fetch.txt\" file.") self.parser.add_argument("--bag-archiver", choices=['zip', 'tgz', 'bz2'], help="Format for compressed bag output.") self.parser.add_argument("--exclude-data", default=list(), type=lambda s: [item.strip() for item in s.split(',')], metavar="<schema>, <schema:table>, ...", help="List of comma-delimited schema-name and/or schema-name/table-name to " "exclude from data export, in the form <schema> or <schema:table>.")
[docs] @classmethod def get_downloader(cls, *args, **kwargs): return DerivaBackup(*args, dcctx_cid="cli/" + DerivaBackupCLI.__name__, **kwargs)