def _create_template_data()

in contrib/go/src/python/pants/contrib/go/tasks/go_buildgen.py [0:0]


  def _create_template_data(self, build_file_path, targets):
    if len(targets) == 1 and self.is_local_src(targets[0]):
      local_target = targets[0]
      data = self._data(target_type='go_binary' if self.is_binary(local_target) else 'go_library',
                        deps=[d.address.reference() for d in local_target.dependencies])
      return self.TemplateResult.local_target(build_file_path=build_file_path,
                                              data=data,
                                              import_paths=[local_target.import_path])
    elif self.get_options().remote:
      fail_floating = self.get_options().fail_floating
      if len(targets) == 1 and not targets[0].pkg:
        remote_lib = targets[0]
        rev = remote_lib.rev
        data = self._data(target_type='go_remote_library', rev=rev)
        import_paths = (remote_lib.import_path,)
        return self.TemplateResult.remote_target(build_file_path=build_file_path,
                                                 data=data,
                                                 import_paths=import_paths,
                                                 rev=rev,
                                                 fail_floating=fail_floating)
      else:
        revs = {t.rev for t in targets if t.rev}
        if len(revs) > 1:
          msg = ('Cannot create BUILD file {} for the following packages at remote root {}, '
                 'they must all have the same version:\n\t{}'
                 .format(build_file_path, targets[0].remote_root,
                         '\n\t'.join('{} {}'.format(t.pkg, t.rev) for t in targets)))
          raise self.NonUniformRemoteRevsError(msg)
        rev = revs.pop() if revs else None

        data = self._data(target_type='go_remote_libraries',
                          rev=rev,
                          pkgs=sorted({t.pkg for t in targets}))
        import_paths = tuple(t.import_path for t in targets)
        return self.TemplateResult.remote_target(build_file_path=build_file_path,
                                                 data=data,
                                                 import_paths=import_paths,
                                                 rev=rev,
                                                 fail_floating=fail_floating)
    else:
      return None