blob: ecf38b389a1d0e6214655f10a6ae16c2df9c717f [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 _dart_format(ctx):
"""Runs `dart format`.
Args:
ctx: A ctx instance.
"""
dart_files = [f for f in ctx.scm.affected_files() if f.endswith(".dart")]
if not dart_files:
return
dart_exe = "%s/prebuilt/third_party/dart/%s/bin/dart" % (
get_fuchsia_dir(ctx),
cipd_platform_name(ctx),
)
procs = [
(
f,
os_exec(ctx, [dart_exe, "format", "--output=json", f]),
)
for f in dart_files
]
for (f, proc) in procs:
new_contents = json.decode(proc.wait().stdout)["source"]
old_contents = str(ctx.io.read_file(f))
if new_contents != old_contents:
ctx.emit.finding(
level = "error",
message = FORMATTER_MSG,
filepath = f,
replacements = [new_contents],
)
def register_dart_checks():
shac.register_check(shac.check(_dart_format, formatter = True))