blob: cd893f3adce5c0aef02ca9657e3a20e1c36c684b [file] [log] [blame] [edit]
# Copyright 2023 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.
# keep-sorted start
load("./cml.star", "register_cml_checks")
load("./common.star", "FORMATTER_MSG", "cipd_platform_name", "get_fuchsia_dir", "os_exec")
load("./dart.star", "register_dart_checks")
load("./docs.star", "register_doc_checks")
load("./fidl.star", "register_fidl_checks")
load("./go.star", "register_go_checks")
load("./json.star", "register_json_checks")
load("./keep_sorted.star", "keep_sorted")
load("./python.star", "register_python_checks")
load("./rust.star", "register_rust_checks")
load("./starlark.star", "register_starlark_checks")
# keep-sorted end
def _gn_format(ctx):
"""Runs gn format on .gn and .gni files.
Args:
ctx: A ctx instance.
"""
gn_files = [
f
for f in ctx.scm.affected_files()
if f.endswith((".gn", ".gni"))
]
if not gn_files:
return
gn = "%s/prebuilt/third_party/gn/%s/gn" % (get_fuchsia_dir(ctx), cipd_platform_name(ctx))
unformatted_files = os_exec(
ctx,
[gn, "format", "--dry-run"] + gn_files,
ok_retcodes = [0, 2],
).wait().stdout.splitlines()
for f in unformatted_files:
formatted_contents = os_exec(
ctx,
[gn, "format", "--stdin"],
stdin = ctx.io.read_file(f),
).wait().stdout
ctx.emit.finding(
level = "error",
message = FORMATTER_MSG,
filepath = f,
replacements = [formatted_contents],
)
def register_all_checks():
"""Register all checks that should run.
Checks must be registered in a callback function because they can only be
registered by the root shac.star file, not at the top level of any `load`ed
file.
"""
shac.register_check(shac.check(_gn_format, formatter = True))
shac.register_check(keep_sorted)
# keeps-sorted start
register_cml_checks()
register_dart_checks()
register_doc_checks()
register_fidl_checks()
register_go_checks()
register_json_checks()
register_python_checks()
register_rust_checks()
register_starlark_checks()
# keeps-sorted end