# Copyright 2024 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Library for registering builder owner alias to builders they own."""
def _generate_builder_owner_alias_files(ctx):
cfg = None
for f in ctx.output:
if f.startswith("luci/cr-buildbucket"):
cfg = ctx.output[f]
break
builders_by_contact_email = {}
for bucket in cfg.buckets:
if not proto.has(bucket, "swarming"):
continue
for builder in bucket.swarming.builders:
email = builder.contact_team_email or "~unowned"
builders_by_contact_email.setdefault(email, []).append("{}/{}".format(bucket.name, builder.name))
for contact_email, builders in builders_by_contact_email.items():
builder_owner_alias_file = "builder-owners/{}.txt".format(contact_email)
ctx.output[builder_owner_alias_file] = "\n".join(sorted(builders))
lucicfg.generator(_generate_builder_owner_alias_files)