Exemple #1
0
    def _runner(input_args):
        if isinstance(input_args, str):
            input_args = input_args.split()
        parser = create_parser()
        args = parser.parse_args(input_args)

        if hasattr(args, 'storage'):
            storage = Storage(os.path.join(tmpdir, "storage"))
            storage.s = None  # prevent requests
            args.storage = storage

        getattr(cdtb_main,
                "command_%s" % args.command.replace('-', '_'))(parser, args)
Exemple #2
0
def parse_storage_args(parser, args) -> Storage:
    """Parse storage-related arguments into a Storage"""

    default_path = os.environ.get('CDRAGONTOOLBOX_STORAGE')
    default_cdn = os.environ.get('CDRAGONTOOLBOX_CDN', 'default')

    cdn = default_cdn if args.cdn is None else args.cdn
    # don't use CDRAGONTOOLBOX_STORAGE when using non-default --cdn is set to
    # avoid mixing files from different CDNs
    if cdn != default_cdn and default_path is not None and args.storage is None:
        parser.error("--storage must be provided when changing --cdn value")

    path = default_path if args.storage is None else args.storage
    if path is None:
        conf = {
            'type': 'rads',
            'path': "RADS" if cdn == 'default' else f"RADS.{cdn}",
            'cdn': cdn,
        }
    else:
        conf = storage_conf_from_path(path)
        if conf is None:
            parser.error(
                f"cannot retrieve storage configuration from '{path}'")
        if conf['type'] == 'rads':
            conf['cdn'] = cdn
        elif cdn != 'default':
            parser.error("--cdn is only supported for 'rads' storage")
    return Storage.from_conf(conf)
Exemple #3
0
def parse_storage_args(parser, args) -> Storage:
    """Parse storage-related arguments into a Storage"""

    default_path = os.environ.get('CDRAGONTOOLBOX_STORAGE')
    default_cdn = os.environ.get('CDRAGONTOOLBOX_CDN', 'default')

    cdn = default_cdn if args.cdn is None else args.cdn
    # don't use CDRAGONTOOLBOX_STORAGE when using non-default --cdn is set to
    # avoid mixing files from different CDNs
    if cdn != default_cdn and default_path is not None and args.storage is None:
        parser.error("--storage must be provided when changing --cdn value")

    path = default_path if args.storage is None else args.storage
    if path is None:
        path = "RADS" if cdn == 'default' else f"RADS.{cdn}"

    storage_url = getattr(Storage, f"URL_{cdn}".upper())
    return Storage(path, storage_url)
Exemple #4
0
def storage(tmpdir):
    storage = Storage(os.path.join(tmpdir, 'RADS'))
    storage.s = None  # prevent requests
    return storage