Ejemplo n.º 1
0
def _process_args(
    args: argparse.Namespace, ) -> Tuple[argparse.Namespace, plug.PlatformAPI]:
    """Process parsed command line arguments.

    Args:
    """
    api = _connect_to_api(args.base_url, args.token, args.org_name, args.user)

    template_org_name = args.org_name
    if "template_org_name" in args and args.template_org_name is not None:
        template_org_name = args.template_org_name

    repos = master_names = master_urls = None
    if "discover_repos" in args and args.discover_repos:
        repos = _discover_repos(args.students, api)
    elif "assignments" in args:
        master_names = args.assignments
        remote_urls, local_uris = _repo_names_to_urls(master_names,
                                                      template_org_name, api)

        if local_uris and not getattr(args, "allow_local_templates", True):
            locals_str = " ".join([f"'{uri}'" for uri in local_uris])
            raise exception.ParseError(
                f"found local templates in workdir: {locals_str}, "
                "use `--allow-local-templates` to allow locals or change "
                "directory to use remotes only")

        master_urls = remote_urls + local_uris
        repos = _repo_tuple_generator(master_names, args.students, api)
        assert master_urls and master_names

    args_dict = vars(args)
    args_dict["template_repo_urls"] = master_urls
    args_dict["assignments"] = master_names
    args_dict["repos"] = repos
    # marker for functionality that relies on fully processed args
    args_dict["_repobee_processed"] = True

    return argparse.Namespace(**args_dict), api
Ejemplo n.º 2
0
def _raise_illegal_action_error(args: argparse.Namespace) -> NoReturn:
    raise exception.ParseError(
        f"Unknown action {args.action} for category {args.category}"
    )
Ejemplo n.º 3
0
def _validate_tls_url(url):
    """Url must use the https protocol."""
    if not url.startswith("https://"):
        raise exception.ParseError(
            "unsupported protocol in {}: "
            "for security reasons, only https is supported".format(url))