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
def _raise_illegal_action_error(args: argparse.Namespace) -> NoReturn: raise exception.ParseError( f"Unknown action {args.action} for category {args.category}" )
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))