code: def process_targets(self, targets, full_config, arguments):
          
          executor = _get_executor(arguments)
          resolver = _get_resolver(arguments)
          dep_manager = resolver(targets, full_config, self._task_order)
          task_queue = dep_manager.get_queue()
          config_info = devpipeline_core.configinfo.ConfigInfo(executor)
  
          try:
              failed = []
  
              def _keep_going_on_failure(failure, task):
                  skipped = task_queue.fail(task)
                  failed.append((task, skipped, str(failure)))
  
              def _fail_immediately(failure, task):
                  del task
                  raise failure
  
              fail_fn = _fail_immediately
              if arguments.keep_going:
                  fail_fn = _keep_going_on_failure
  
              self._execute_targets(task_queue, config_info, full_config, fail_fn)
              if failed:
                  raise _PartialFailureException(failed)
          finally:
              full_config.write()
docs: Calls the tasks with the appropriate options for each of the targets.