| # 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 |