blob: 4b6d533458558e90bc074ca952d58fa0a9416734 [file] [log] [blame]
# 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.
load("./common.star", "FORMATTER_MSG", "cipd_platform_name", "get_fuchsia_dir", "os_exec")
def _gofmt(ctx):
"""Runs gofmt on a Go code base.
Args:
ctx: A ctx instance.
"""
go_files = [f for f in ctx.scm.affected_files() if f.endswith(".go") and not f.startswith("third_party/")]
if not go_files:
return
base_cmd = [
"%s/prebuilt/third_party/go/%s/bin/gofmt" % (
get_fuchsia_dir(ctx),
cipd_platform_name(ctx),
),
"-s", # simplify
]
unformatted = os_exec(ctx, base_cmd + ["-l"] + go_files).wait().stdout.splitlines()
for f in unformatted:
new_contents = os_exec(ctx, base_cmd + [f]).wait().stdout
ctx.emit.finding(
level = "error",
message = FORMATTER_MSG,
filepath = f,
replacements = [new_contents],
)
def register_go_checks():
shac.register_check(shac.check(_gofmt, formatter = True))