blob: 5f9afd000d534e1c54f7a11cb77aee8307c41983 [file] [log] [blame]
# Copyright 2024 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
load("./common.star", "cipd_platform_name", "get_fuchsia_dir", "os_exec")
BROKEN_INCLUDE_MSG = "File does not exist, can't be included."
def owners(ctx):
"""Validates include statements in owners files.
Args:
ctx: A ctx instance.
"""
owners_files = [
f
for f in ctx.scm.affected_files()
if f.endswith("OWNERS")
]
procs = []
for f in owners_files:
procs.append(
(f, os_exec(ctx, [
"%s/prebuilt/third_party/python3/%s/bin/python3" % (
get_fuchsia_dir(ctx),
cipd_platform_name(ctx),
),
"scripts/shac/broken_include_owners.py",
f,
])),
)
for f, proc in procs:
res = proc.wait()
for finding in json.decode(res.stdout):
for line in finding["lines"]:
#TODO(danikay) Change to error once broken includes are fixed.
ctx.emit.finding(
level = "warning",
filepath = f,
message = BROKEN_INCLUDE_MSG,
line = line,
)
def register_owners_checks():
shac.register_check(shac.check(owners, formatter = False))