From 067036269464d92d55bec8ba4cbe37d9ddbf8588 Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sat, 16 Aug 2025 20:10:30 -0700 Subject: [PATCH 1/8] use combo of --project and --directory enable verbosity in uv output --- action.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/action.yml b/action.yml index ad733c15..107d7631 100644 --- a/action.yml +++ b/action.yml @@ -296,7 +296,6 @@ runs: run: |- let action_path = $env.GITHUB_ACTION_PATH | path expand $env.UV_INSTALL_DIR = $action_path | path join 'bin' - $env.UV_PROJECT_ENVIRONMENT = $action_path | path join '.venv' $env.UV_CACHE_DIR = $env.RUNNER_TEMP | path join 'cpp-linter-action-cache' if (not ($env.UV_CACHE_DIR | path exists)) { @@ -311,10 +310,12 @@ runs: } print $"\n(ansi purple)Installing workflow dependencies(ansi reset)" - ^$'($env.UV_INSTALL_DIR)/uv' sync --directory $action_path --group action + ^$'($env.UV_INSTALL_DIR)/uv' sync -v --project $action_path --group action print $"\n(ansi purple)Ensuring clang-format and clang-tidy ${{ inputs.version }} are present(ansi reset)" - ^$'($env.UV_INSTALL_DIR)/uv' run clang-tools -i ${{ inputs.version }} -b + let cmd = [clang-tools -i ${{ inputs.version }} -b] + let uv_args = [run --no-sync --project $action_path --directory (pwd)] + ^$'($env.UV_INSTALL_DIR)/uv' -v ...$uv_args ...$cmd - name: Run cpp-linter id: cpp-linter @@ -322,7 +323,6 @@ runs: run: |- let action_path = $env.GITHUB_ACTION_PATH | path expand $env.UV_INSTALL_DIR = $action_path | path join 'bin' - $env.UV_PROJECT_ENVIRONMENT = $action_path | path join '.venv' $env.UV_CACHE_DIR = $env.RUNNER_TEMP | path join 'cpp-linter-action-cache' let args = [ @@ -350,4 +350,5 @@ runs: ] print $"\n(ansi purple)Running cpp-linter(ansi reset)" - ^$'($env.UV_INSTALL_DIR)/uv' run cpp-linter ...$args + let uv_args = [run --no-sync --project $action_path --directory (pwd)] + ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args -v cpp-linter ...$args From 09178a8db830db198dedee2fb7ea2432916bc928 Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sat, 16 Aug 2025 21:13:44 -0700 Subject: [PATCH 2/8] conditionally show uv debug output dependent on ACTIONS_STEP_DEBUG env var or `inputs.verbosity` --- action.yml | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/action.yml b/action.yml index 107d7631..150bc446 100644 --- a/action.yml +++ b/action.yml @@ -309,13 +309,30 @@ runs: ^curl -LsSf $"https://astral.sh/uv/($env.UV_VERSION)/install.sh" | sh } + let gh_action_debug = $env | get --optional 'ACTIONS_STEP_DEBUG' + let action_verbosity = '${{ inputs.verbosity }}' == 'debug' + let verbosity = ( + $action_verbosity + or ($gh_action_debug == true) + or ($gh_action_debug == 'true') + ) + + mut uv_args = [sync --project $action_path --group action] + if $verbosity { + $uv_args = $uv_args | append '-v' + } + print $"\n(ansi purple)Installing workflow dependencies(ansi reset)" - ^$'($env.UV_INSTALL_DIR)/uv' sync -v --project $action_path --group action + ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args - print $"\n(ansi purple)Ensuring clang-format and clang-tidy ${{ inputs.version }} are present(ansi reset)" let cmd = [clang-tools -i ${{ inputs.version }} -b] - let uv_args = [run --no-sync --project $action_path --directory (pwd)] - ^$'($env.UV_INSTALL_DIR)/uv' -v ...$uv_args ...$cmd + $uv_args = [run --no-sync --project $action_path --directory (pwd)] + if $verbosity { + $uv_args = $uv_args | append '-v' + } + + print $"\n(ansi purple)Ensuring clang-format and clang-tidy ${{ inputs.version }} are present(ansi reset)" + ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args ...$cmd - name: Run cpp-linter id: cpp-linter @@ -348,7 +365,18 @@ runs: --passive-reviews="${{ inputs.passive-reviews }}" --jobs=${{ inputs.jobs }} ] + mut uv_args = [run --no-sync --project $action_path --directory (pwd)] + + let gh_action_debug = $env | get --optional 'ACTIONS_STEP_DEBUG' + let action_verbosity = '${{ inputs.verbosity }}' == 'debug' + let verbosity = ( + $action_verbosity + or ($gh_action_debug == true) + or ($gh_action_debug == 'true') + ) + if $verbosity { + $uv_args = $uv_args | append '-v' + } print $"\n(ansi purple)Running cpp-linter(ansi reset)" - let uv_args = [run --no-sync --project $action_path --directory (pwd)] - ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args -v cpp-linter ...$args + ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args cpp-linter ...$args From 5faf5ac5ff8657edb2ad69cdb3a8bc9f9e7021ac Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sun, 17 Aug 2025 00:10:27 -0700 Subject: [PATCH 3/8] use nushell `http` command instead of `curl` on unix or `irm ... iex` on windows because `curl` may not be available --- action.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/action.yml b/action.yml index 150bc446..89f3e77c 100644 --- a/action.yml +++ b/action.yml @@ -292,7 +292,7 @@ runs: shell: nu {0} env: UV_NO_MODIFY_PATH: 1 - UV_VERSION: '0.8.9' + UV_VERSION: '0.8.11' run: |- let action_path = $env.GITHUB_ACTION_PATH | path expand $env.UV_INSTALL_DIR = $action_path | path join 'bin' @@ -303,10 +303,17 @@ runs: } print $"\n(ansi purple)Installing uv version ($env.UV_VERSION)(ansi reset)" - if ((sys host | get 'name') == 'Windows') { - ^powershell -ExecutionPolicy ByPass -c $"irm https://astral.sh/uv/($env.UV_VERSION)/install.ps1 | iex" + let is_windows = (sys host | get 'name') == 'Windows' + let uv_installer_url = if $is_windows { + $"https://astral.sh/uv/($env.UV_VERSION)/install.ps1" } else { - ^curl -LsSf $"https://astral.sh/uv/($env.UV_VERSION)/install.sh" | sh + $"https://astral.sh/uv/($env.UV_VERSION)/install.sh" + } + let installer = http get --raw --redirect-mode follow $uv_installer_url + if $is_windows { + ^powershell -ExecutionPolicy ByPass $installer + } else { + $installer | ^sh } let gh_action_debug = $env | get --optional 'ACTIONS_STEP_DEBUG' @@ -317,21 +324,19 @@ runs: or ($gh_action_debug == 'true') ) + print $"\n(ansi purple)Installing workflow dependencies(ansi reset)" mut uv_args = [sync --project $action_path --group action] if $verbosity { $uv_args = $uv_args | append '-v' } - - print $"\n(ansi purple)Installing workflow dependencies(ansi reset)" ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args + print $"\n(ansi purple)Ensuring clang-format and clang-tidy ${{ inputs.version }} are present(ansi reset)" let cmd = [clang-tools -i ${{ inputs.version }} -b] $uv_args = [run --no-sync --project $action_path --directory (pwd)] if $verbosity { $uv_args = $uv_args | append '-v' } - - print $"\n(ansi purple)Ensuring clang-format and clang-tidy ${{ inputs.version }} are present(ansi reset)" ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args ...$cmd - name: Run cpp-linter From 80be7c27b552e8b8f291a132f1a379db0347411c Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sun, 17 Aug 2025 02:45:24 -0700 Subject: [PATCH 4/8] rewrote most steps at this point I love nushell! --- action.yml | 156 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 100 insertions(+), 56 deletions(-) diff --git a/action.yml b/action.yml index 89f3e77c..c6e38b48 100644 --- a/action.yml +++ b/action.yml @@ -217,7 +217,13 @@ inputs: required: false default: 0 cache-enable: - description: enable caching of cpp-linter dependencies + description: |- + Controls the caching of cpp-linter dependencies. + The installed `clang-format` and `clang-tidy` tools are not cached. + + By default, this is enabled. + Any cached assets are kept within the path to this action's source + (not in the runner's workspace or temp directory). required: false default: true outputs: @@ -233,21 +239,6 @@ outputs: runs: using: "composite" steps: - - name: Install Linux clang dependencies - if: runner.os == 'Linux' - shell: bash - run: | - sudo apt-get update - # First try installing from default Ubuntu repositories before trying LLVM script - if ! sudo apt-get install -y clang-format-${{ inputs.version }} clang-tidy-${{ inputs.version }}; then - # This LLVM script will add the relevant LLVM PPA: https://apt.llvm.org/ - wget https://apt.llvm.org/llvm.sh -O ${GITHUB_ACTION_PATH%/}/llvm_install.sh - chmod +x ${GITHUB_ACTION_PATH%/}/llvm_install.sh - if sudo ${GITHUB_ACTION_PATH%/}/llvm_install.sh ${{ inputs.version }}; then - sudo apt-get install -y clang-format-${{ inputs.version }} clang-tidy-${{ inputs.version }} - fi - fi - - name: Setup nu shell # I'm done writing everything twice (in bash and powershell) # With nu shell, we use the same shell/script for all platforms @@ -279,14 +270,67 @@ runs: path: ${{ runner.temp }}/cpp-linter-action-cache key: cpp-linter-action_${{ runner.os }}_${{ steps.compute-cache-key.outputs.key }} + - name: Install Linux clang dependencies + if: runner.os == 'Linux' + shell: nu {0} + run: | + let action_path = $env.GITHUB_ACTION_PATH | path expand + let apt_install_args = [ + install -y clang-format-${{ inputs.version }} clang-tidy-${{ inputs.version }} + ] + let has_sudo = not ((which 'sudo') | is-empty) + + # First try installing from default Ubuntu repositories before trying LLVM script + let are_tools_present = ( + if $has_sudo { + ^sudo apt-get update + ^sudo apt-get ...$apt_install_args + } else { + ^apt-get update + ^apt-get ...$apt_install_args + } + ) | complete | $in.exit_code == 0 + if (not $are_tools_present) { + # This LLVM script will add the relevant LLVM PPA: https://apt.llvm.org/ + ( + http get --raw --redirect-mode follow https://apt.llvm.org/llvm.sh + | save $"($action_path)/llvm_install.sh" + ) + ^chmod +x $"($action_path)/llvm_install.sh" + + let llvm_installer_result = ( + if $has_sudo { + ^sudo $"($action_path)/llvm_install.sh" ${{ inputs.version }} + } else { + ^bash $"($action_path)/llvm_install.sh" ${{ inputs.version }} + } + ) | complete + print $llvm_installer_result + + if ($llvm_installer_result.exit_code == 0) { + let result = ( + if $has_sudo { + ^sudo apt-get ...$apt_install_args + } else { + ^apt-get ...$apt_install_args + } + ) | complete + print $result + } + } + - name: Install MacOS clang dependencies if: runner.os == 'macOS' - shell: bash - continue-on-error: true - run: | - brew install llvm@${{ inputs.version }} - ln -s "$(brew --prefix llvm@${{ inputs.version }})/bin/clang-format" "/usr/local/bin/clang-format-${{ inputs.version }}" - ln -s "$(brew --prefix llvm@${{ inputs.version }})/bin/clang-tidy" "/usr/local/bin/clang-tidy-${{ inputs.version }}" + shell: nu {0} + run: |- + let brew_install_arg = 'llvm@${{ inputs.version }}' + let result = (^brew install $brew_install_arg) | complete + print $result + if ($result.exit_code == 0) { + let brew_prefix = ^brew --prefix $brew_install_arg + ^ln -s $"($brew_prefix)/bin/clang-format" "/usr/local/bin/clang-format-${{ inputs.version }}" + ^ln -s $"($brew_prefix)/bin/clang-tidy" "/usr/local/bin/clang-tidy-${{ inputs.version }}" + } - name: Setup cpp-linter dependencies shell: nu {0} @@ -299,29 +343,29 @@ runs: $env.UV_CACHE_DIR = $env.RUNNER_TEMP | path join 'cpp-linter-action-cache' if (not ($env.UV_CACHE_DIR | path exists)) { - mkdir $env.UV_CACHE_DIR + mkdir $env.UV_CACHE_DIR } print $"\n(ansi purple)Installing uv version ($env.UV_VERSION)(ansi reset)" let is_windows = (sys host | get 'name') == 'Windows' let uv_installer_url = if $is_windows { - $"https://astral.sh/uv/($env.UV_VERSION)/install.ps1" + $"https://astral.sh/uv/($env.UV_VERSION)/install.ps1" } else { - $"https://astral.sh/uv/($env.UV_VERSION)/install.sh" + $"https://astral.sh/uv/($env.UV_VERSION)/install.sh" } let installer = http get --raw --redirect-mode follow $uv_installer_url if $is_windows { - ^powershell -ExecutionPolicy ByPass $installer + ^powershell -ExecutionPolicy ByPass $installer } else { - $installer | ^sh + $installer | ^sh } let gh_action_debug = $env | get --optional 'ACTIONS_STEP_DEBUG' let action_verbosity = '${{ inputs.verbosity }}' == 'debug' let verbosity = ( - $action_verbosity - or ($gh_action_debug == true) - or ($gh_action_debug == 'true') + $action_verbosity + or ($gh_action_debug == true) + or ($gh_action_debug == 'true') ) print $"\n(ansi purple)Installing workflow dependencies(ansi reset)" @@ -335,7 +379,7 @@ runs: let cmd = [clang-tools -i ${{ inputs.version }} -b] $uv_args = [run --no-sync --project $action_path --directory (pwd)] if $verbosity { - $uv_args = $uv_args | append '-v' + $uv_args = $uv_args | append '-v' } ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args ...$cmd @@ -348,39 +392,39 @@ runs: $env.UV_CACHE_DIR = $env.RUNNER_TEMP | path join 'cpp-linter-action-cache' let args = [ - --style="${{ inputs.style }}" - --extensions=${{ inputs.extensions }} - --tidy-checks="${{ inputs.tidy-checks }}" - --repo-root=${{ inputs.repo-root }} - --version=${{ inputs.version }} - --verbosity=${{ inputs.verbosity }} - --lines-changed-only=${{ inputs.lines-changed-only }} - --files-changed-only=${{ inputs.files-changed-only }} - --thread-comments=${{ inputs.thread-comments }} - --no-lgtm=${{ inputs.no-lgtm }} - --step-summary=${{ inputs.step-summary }} - --ignore="${{ inputs.ignore }}" - --ignore-tidy="${{ inputs.ignore-tidy }}" - --ignore-format="${{ inputs.ignore-format }}" - --database=${{ inputs.database }} - --file-annotations=${{ inputs.file-annotations }} - --extra-arg="${{ inputs.extra-args }}" - --tidy-review="${{ inputs.tidy-review }}" - --format-review="${{ inputs.format-review }}" - --passive-reviews="${{ inputs.passive-reviews }}" - --jobs=${{ inputs.jobs }} + --style="${{ inputs.style }}" + --extensions=${{ inputs.extensions }} + --tidy-checks="${{ inputs.tidy-checks }}" + --repo-root=${{ inputs.repo-root }} + --version=${{ inputs.version }} + --verbosity=${{ inputs.verbosity }} + --lines-changed-only=${{ inputs.lines-changed-only }} + --files-changed-only=${{ inputs.files-changed-only }} + --thread-comments=${{ inputs.thread-comments }} + --no-lgtm=${{ inputs.no-lgtm }} + --step-summary=${{ inputs.step-summary }} + --ignore="${{ inputs.ignore }}" + --ignore-tidy="${{ inputs.ignore-tidy }}" + --ignore-format="${{ inputs.ignore-format }}" + --database=${{ inputs.database }} + --file-annotations=${{ inputs.file-annotations }} + --extra-arg="${{ inputs.extra-args }}" + --tidy-review="${{ inputs.tidy-review }}" + --format-review="${{ inputs.format-review }}" + --passive-reviews="${{ inputs.passive-reviews }}" + --jobs=${{ inputs.jobs }} ] mut uv_args = [run --no-sync --project $action_path --directory (pwd)] let gh_action_debug = $env | get --optional 'ACTIONS_STEP_DEBUG' let action_verbosity = '${{ inputs.verbosity }}' == 'debug' let verbosity = ( - $action_verbosity - or ($gh_action_debug == true) - or ($gh_action_debug == 'true') + $action_verbosity + or ($gh_action_debug == true) + or ($gh_action_debug == 'true') ) if $verbosity { - $uv_args = $uv_args | append '-v' + $uv_args = $uv_args | append '-v' } print $"\n(ansi purple)Running cpp-linter(ansi reset)" From e3308f868a99cf0eb34163fc9ce82a254f9ddd6c Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sun, 17 Aug 2025 03:13:19 -0700 Subject: [PATCH 5/8] conditionally add ~/.local/bin to PATH temporarily --- action.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/action.yml b/action.yml index c6e38b48..2d02921e 100644 --- a/action.yml +++ b/action.yml @@ -427,5 +427,15 @@ runs: $uv_args = $uv_args | append '-v' } + let local_bin = '~/.local/bin' | path expand + let tmp_path = if ( + ('${{ runner.os }}' == 'Linux') + and ($local_bin | path exists) + and (not ($env.PATH | any {$in == $local_bin})) + ) { + # add ~/.local/bin to PATH (temporarily) + $env.PATH = $env.PATH | append $local_bin + } + print $"\n(ansi purple)Running cpp-linter(ansi reset)" ^$'($env.UV_INSTALL_DIR)/uv' ...$uv_args cpp-linter ...$args From a27ea8bc6db6676a1c8ab2beb577b405b5a3a454 Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sun, 17 Aug 2025 04:32:19 -0700 Subject: [PATCH 6/8] document required tools for each platform --- README.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8f910a80..6639b7b8 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,7 @@ workflow [`step-summary`][step-summary], and Pull Request reviews (with [`tidy-review`][tidy-review] or [`format-review`][format-review]). > [!WARNING] -> We only support Linux runners using a Debian-based Linux OS (like Ubuntu and many others). -> -> MacOS and Windows runners are supported as well. +> See the [required tools section below](#required-tools-installed). ## Usage @@ -158,8 +156,55 @@ Example To provide feedback (requesting a feature or reporting a bug) please post to [issues](https://github.com/cpp-linter/cpp-linter-action/issues). +## Required tools installed + +As of v2.16.0, this action now uses + +- [nushell] for cross-platform compatible scripting +- [uv] for driving a Python virtual environment + +This action installs [nushell] and [uv] automatically, but only [nushell] is added to the PATH environment variable; +[uv], and any standalone Python distribution it downloads, are not added to the PATH environment variable. + +### On Linux runners + +We only support Linux runners using a Debian-based Linux OS (like Ubuntu and many others). +This is because we first try to use the `apt` package manager to install clang tools. + +Linux workflows that use a specific [`container`][gh-container-syntax] should ensure that +the following is installed: + +- GLIBC (v2.32 or later) +- `wget` or `curl` +- `lsb-release` (required by LLVM-provided install script) +- `software-properties-common` (required by LLVM-provided install script) +- `gnupg` (required by LLVM-provided install script) + +```shell +apt-get install -y libc6 wget lsb-release software-properties-common gnupg +``` + +Otherwise, [nushell] and/or the LLVM-provided bash script will fail to run. + +### On MacOS runners + +The specified `version` of `clang-format` and `clang-tidy` is installed via Homebrew. +Failing that, we attempt to use static binaries that we built ourselves; +see [cpp-linter/clang-tools-pip] and [cpp-linter/clang-tools-static-binaries] projects for more detail. + +### On Windows runners + +For Windows runners, we only use clang tools built as static binaries. +See [cpp-linter/clang-tools-pip] and [cpp-linter/clang-tools-static-binaries] projects for more detail. + ## License The scripts and documentation in this project are released under the [MIT License](https://github.com/cpp-linter/cpp-linter-action/blob/main/LICENSE) +[nushell]: https://www.nushell.sh/ +[uv]: https://docs.astral.sh/uv/ +[cpp-linter/clang-tools-pip]: https://github.com/cpp-linter/clang-tools-pip +[cpp-linter/clang-tools-static-binaries]: https://github.com/cpp-linter/clang-tools-static-binaries +[gh-container-syntax]: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontainer + From 1e8513ad474ab9cb3bf72b8b93b86856a5bb4b58 Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Sun, 17 Aug 2025 06:07:20 -0700 Subject: [PATCH 7/8] AI review changes --- README.md | 10 ++++++---- action.yml | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6639b7b8..3a84b0c1 100644 --- a/README.md +++ b/README.md @@ -158,12 +158,13 @@ To provide feedback (requesting a feature or reporting a bug) please post to [is ## Required tools installed -As of v2.16.0, this action now uses +As of v2.16.0, this action uses - [nushell] for cross-platform compatible scripting - [uv] for driving a Python virtual environment -This action installs [nushell] and [uv] automatically, but only [nushell] is added to the PATH environment variable; +This action installs [nushell] and [uv] automatically. +Only [nushell] is added to the PATH environment variable. [uv], and any standalone Python distribution it downloads, are not added to the PATH environment variable. ### On Linux runners @@ -172,7 +173,7 @@ We only support Linux runners using a Debian-based Linux OS (like Ubuntu and man This is because we first try to use the `apt` package manager to install clang tools. Linux workflows that use a specific [`container`][gh-container-syntax] should ensure that -the following is installed: +the following are installed: - GLIBC (v2.32 or later) - `wget` or `curl` @@ -181,12 +182,13 @@ the following is installed: - `gnupg` (required by LLVM-provided install script) ```shell +apt-get update apt-get install -y libc6 wget lsb-release software-properties-common gnupg ``` Otherwise, [nushell] and/or the LLVM-provided bash script will fail to run. -### On MacOS runners +### On macOS runners The specified `version` of `clang-format` and `clang-tidy` is installed via Homebrew. Failing that, we attempt to use static binaries that we built ourselves; diff --git a/action.yml b/action.yml index 2d02921e..6aee2496 100644 --- a/action.yml +++ b/action.yml @@ -428,7 +428,7 @@ runs: } let local_bin = '~/.local/bin' | path expand - let tmp_path = if ( + if ( ('${{ runner.os }}' == 'Linux') and ($local_bin | path exists) and (not ($env.PATH | any {$in == $local_bin})) From 45a8c123eebb451f08e042f6e0fe5825beebaebe Mon Sep 17 00:00:00 2001 From: Brendan <2bndy5@gmail.com> Date: Mon, 18 Aug 2025 01:49:12 -0700 Subject: [PATCH 8/8] remove warning in README --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 3a84b0c1..385f9f4c 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,6 @@ to collect feedback provided in the form of workflow [`step-summary`][step-summary], and Pull Request reviews (with [`tidy-review`][tidy-review] or [`format-review`][format-review]). -> [!WARNING] -> See the [required tools section below](#required-tools-installed). - ## Usage Create a new GitHub Actions workflow in your project, e.g. at [.github/workflows/cpp-linter.yml](https://github.com/cpp-linter/cpp-linter-action/blob/main/.github/workflows/cpp-linter.yml)