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