| # 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. |
| |
| """ |
| Runs static analysis checks defined in shac.star in an arbitrary repository. |
| """ |
| |
| from PB.recipes.fuchsia.shac import InputProperties |
| |
| DEPS = [ |
| "fuchsia/buildbucket_util", |
| "fuchsia/cipd_ensure", |
| "fuchsia/git_checkout", |
| "fuchsia/shac", |
| "recipe_engine/context", |
| "recipe_engine/properties", |
| "recipe_engine/step", |
| ] |
| |
| PROPERTIES = InputProperties |
| |
| |
| def RunSteps(api, props): |
| checkout_dir, revision = api.git_checkout(repo=props.remote) |
| if props.bootstrap_step: |
| with api.context(cwd=checkout_dir): |
| api.step( |
| props.bootstrap_step, |
| [checkout_dir / props.bootstrap_step], |
| ) |
| |
| if props.shac_path: |
| shac_path = checkout_dir / props.shac_path |
| else: |
| shac_path = api.cipd_ensure( |
| api.resource("cipd.ensure"), |
| "fuchsia/shac/${platform}", |
| ) |
| |
| api.shac.check( |
| root=checkout_dir, |
| shac_path=shac_path, |
| revision=revision, |
| entrypoint=props.entrypoint, |
| ) |
| |
| |
| def GenTests(api): |
| def properties(**kwargs): |
| return api.properties(remote="https://foo.googlesource.com/bar", **kwargs) |
| |
| yield api.buildbucket_util.test("basic") + properties() |
| |
| yield api.buildbucket_util.test("shac_path") + properties( |
| bootstrap_step="scripts/bootstrap.sh", |
| shac_path="tools/shac", |
| ) |