def get_task(self, name): """ Returns a TaskConfig """ config = getattr(self, "tasks__{}".format(name)) if not config: raise TaskNotFoundError("Task not found: {}".format(name)) return TaskConfig(config)
def task_run(config, task_name, org, o, debug, debug_before, debug_after, no_prompt): # Check environment config.check_keychain() # Get necessary configs org, org_config = config.get_org(org, fail_if_missing=False) task_config = getattr(config.project_config, "tasks__{}".format(task_name)) if not task_config: raise TaskNotFoundError("Task not found: {}".format(task_name)) # Get the class to look up options class_path = task_config.get("class_path") task_class = import_class(class_path) # Parse command line options and add to task config if o: if "options" not in task_config: task_config["options"] = {} for name, value in o: # Validate the option if name not in task_class.task_options: raise click.UsageError( 'Option "{}" is not available for task {}'.format( name, task_name)) # Override the option in the task config task_config["options"][name] = value task_config = TaskConfig(task_config) # Create and run the task try: task = task_class(config.project_config, task_config, org_config=org_config) if debug_before: import pdb pdb.set_trace() task() if debug_after: import pdb pdb.set_trace() except (TaskRequiresSalesforceOrg, TaskOptionsError) as e: # Usage error; report with usage line and no traceback exception = click.UsageError(e.message) handle_exception_debug(config, debug, throw_exception=exception) except ( ApexTestException, BrowserTestFailure, MetadataComponentFailure, MetadataApiError, ScratchOrgException, ) as e: # Expected failure; report without traceback exception = click.ClickException("Failed: {}".format( e.__class__.__name__)) handle_exception_debug(config, debug, throw_exception=exception) except Exception: # Unexpected exception; log to sentry and raise handle_exception_debug(config, debug, no_prompt=no_prompt)
def task_run(config, task_name, org, o, debug, debug_before, debug_after, no_prompt): # Check environment check_keychain(config) # Get necessary configs if org: org_config = config.project_config.get_org(org) else: org, org_config = config.project_config.keychain.get_default_org() if org_config: org_config = check_org_expired(config, org, org_config) task_config = getattr(config.project_config, 'tasks__{}'.format(task_name)) if not task_config: raise TaskNotFoundError('Task not found: {}'.format(task_name)) # Get the class to look up options class_path = task_config.get('class_path') task_class = import_class(class_path) # Parse command line options and add to task config if o: if 'options' not in task_config: task_config['options'] = {} for option in o: name = option[0] value = option[1] # Validate the option if name not in task_class.task_options: raise click.UsageError( 'Option "{}" is not available for task {}'.format( name, task_name, ), ) # Override the option in the task config task_config['options'][name] = value task_config = TaskConfig(task_config) exception = None # Create and run the task try: task = task_class(config.project_config, task_config, org_config=org_config) except TaskRequiresSalesforceOrg as e: exception = click.UsageError( 'This task requires a salesforce org. Use org default <name> to set a default org or pass the org name with the --org option' ) except TaskOptionsError as e: exception = click.UsageError(e.message) handle_exception_debug(config, debug, e, throw_exception=exception) except Exception as e: handle_exception_debug(config, debug, e, no_prompt=no_prompt) if debug_before: import pdb pdb.set_trace() if not exception: try: task() except TaskOptionsError as e: exception = click.UsageError(e.message) handle_exception_debug(config, debug, e, throw_exception=exception) except ApexTestException as e: exception = click.ClickException('Failed: ApexTestFailure') handle_exception_debug(config, debug, e, throw_exception=exception) except BrowserTestFailure as e: exception = click.ClickException('Failed: BrowserTestFailure') handle_exception_debug(config, debug, e, throw_exception=exception) except MetadataComponentFailure as e: exception = click.ClickException( 'Failed: MetadataComponentFailure') handle_exception_debug(config, debug, e, throw_exception=exception) except MetadataApiError as e: exception = click.ClickException('Failed: MetadataApiError') handle_exception_debug(config, debug, e, throw_exception=exception) except ScratchOrgException as e: exception = click.ClickException('ScratchOrgException: {}'.format( e.message)) handle_exception_debug(config, debug, e, throw_exception=exception) except Exception as e: handle_exception_debug(config, debug, e, no_prompt=no_prompt) if debug_after: import pdb pdb.set_trace() if exception: handle_sentry_event(config, no_prompt) raise exception
def task_run(config, task_name, org, o, debug): # Check environment check_keychain(config) # Get necessary configs if org: org_config = config.project_config.get_org(org) else: org, org_config = config.project_config.keychain.get_default_org() task_config = getattr(config.project_config, 'tasks__{}'.format(task_name)) if not task_config: raise TaskNotFoundError('Task not found: {}'.format(task_name)) # Get the class to look up options class_path = task_config.get('class_path') task_class = import_class(class_path) # Parse command line options and add to task config if o: if 'options' not in task_config: task_config['options'] = {} for option in o: name = option[0] value = option[1] # Validate the option if name not in task_class.task_options: raise click.UsageError( 'Option "{}" is not available for task {}'.format( name, task_name, ), ) # Override the option in the task config task_config['options'][name] = value task_config = TaskConfig(task_config) exception = None # Create and run the task try: task = task_class(config.project_config, task_config, org_config=org_config) except TaskRequiresSalesforceOrg as e: exception = click.UsageError( 'This task requires a salesforce org. Use org default <name> to set a default org or pass the org name with the --org option' ) except TaskOptionsError as e: exception = click.UsageError(e.message) except Exception as e: if debug: import pdb import traceback traceback.print_exc() pdb.post_mortem() else: raise if not exception: try: task() except TaskOptionsError as e: exception = click.UsageError(e.message) except ApexTestException as e: exception = click.ClickException('Failed: ApexTestFailure') except MetadataComponentFailure as e: exception = click.ClickException( 'Failed: MetadataComponentFailure') except MetadataApiError as e: exception = click.ClickException('Failed: MetadataApiError') except Exception as e: if debug: import pdb import traceback traceback.print_exc() pdb.post_mortem() else: raise # Save the org config in case it was modified in the task if org and org_config: config.keychain.set_org(org, org_config) if exception: raise exception