""" These commands are used by pre-commit. """ # pylint: disable=resource-leakage,broad-except,3rd-party-module-not-gated from __future__ import annotations import logging import shutil from ptscripts import Context, command_group log = logging.getLogger(__name__) # Define the command group cgroup = command_group( name="pre-commit", help="Pre-Commit Related Commands", description=__doc__ ) @cgroup.command( name="actionlint", arguments={ "files": { "help": "Files to run actionlint against", "nargs": "*", }, "no_color": { "help": "Disable colors in output", }, }, ) def actionlint(ctx: Context, files: list[str], no_color: bool = False): """ Run `actionlint` """ actionlint = shutil.which("actionlint") if not actionlint: ctx.warn("Could not find the 'actionlint' binary") ctx.exit(0) cmdline = [actionlint] if no_color is False: cmdline.append("-color") shellcheck = shutil.which("shellcheck") if shellcheck: cmdline.append(f"-shellcheck={shellcheck}") pyflakes = shutil.which("pyflakes") if pyflakes: cmdline.append(f"-pyflakes={pyflakes}") ret = ctx.run(*cmdline, *files, check=False) ctx.exit(ret.returncode)