From 17a2e52c3262dd15ae477348fdeac57ebc4ece41 Mon Sep 17 00:00:00 2001 From: Yoshihisa Mochihara Date: Tue, 12 Mar 2024 23:34:49 +0100 Subject: [PATCH] support ruff mode Argument Users can now specify the mode of ruff to be 'check' or 'format' using the mode input. --- README.md | 4 +++- action.yml | 10 ++++++++-- action/main.py | 17 ++++++++++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7adb850..265adeb 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,15 @@ can be included as a step in any other workflow file. The Ruff action can be customized via optional configuration parameters passed to Ruff (using `with:`): - version: Must be a Ruff release available on PyPI. By default, latest release of Ruff. You can pin a version, or use any valid version specifier. -- args: default, `check` +- mode: 'check' or 'format', default, 'check' +- args: default, '' - src: default, '.' ```yaml - uses: chartboost/ruff-action@v1 with: src: "./src" + mode: "check" version: 0.2.2 args: --select B ``` diff --git a/action.yml b/action.yml index 4956cbc..2d60add 100644 --- a/action.yml +++ b/action.yml @@ -2,12 +2,17 @@ name: "Ruff GH Action" description: "A GH Action of Ruff, the extremely fast Python linter." author: "The Ruff Community" inputs: + mode: + description: + "Specify ruff mode 'check' or 'format'" + required: false + default: "check" args: description: "Arguments passed to Ruff. Use `ruff --help` to see available options. - Default: 'check'" + Default: ''" required: false - default: "check" + default: "" src: description: "Source to run ruff. Default: '.'" required: false @@ -30,6 +35,7 @@ runs: fi env: RUFF_OUTPUT_FORMAT: github + INPUT_MODE: ${{ inputs.mode }} INPUT_ARGS: ${{ inputs.args }} INPUT_SRC: ${{ inputs.src }} INPUT_VERSION: ${{ inputs.version }} diff --git a/action/main.py b/action/main.py index 1e0e74f..1cba043 100644 --- a/action/main.py +++ b/action/main.py @@ -9,6 +9,7 @@ ACTION_PATH = Path(os.environ["GITHUB_ACTION_PATH"]) ARGS = os.getenv("INPUT_ARGS", default="") +MODE = os.getenv("INPUT_MODE", default="") SRC = os.getenv("INPUT_SRC", default="") VERSION = os.getenv("INPUT_VERSION", default="") @@ -21,6 +22,20 @@ req = f"ruff{version_specifier}" -proc = run(["pipx", "run", req, *shlex.split(ARGS), *shlex.split(SRC)]) +command = ( + ["pipx", "run", req, MODE, *shlex.split(ARGS), *shlex.split(SRC)] + if MODE == "check" + else [ + "pipx", + "run", + req, + MODE, + "--check", + *shlex.split(ARGS), + *shlex.split(SRC), + ] +) + +proc = run(command) sys.exit(proc.returncode)