Skip to content

Commit

Permalink
feat: add format input and a single-line problem matcher (#40)
Browse files Browse the repository at this point in the history
Co-authored-by: Joakim Sørensen <ludeeus@gmail.com>
  • Loading branch information
laughedelic and ludeeus committed Mar 31, 2021
1 parent 184a772 commit 94e0aab
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 5 deletions.
18 changes: 18 additions & 0 deletions .github/problem-matcher-gcc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"problemMatcher": [
{
"owner": "shellcheck-gcc",
"pattern": [
{
"regexp": "^(.+):(\\d+):(\\d+):\\s(note|warning|error):\\s(.*)\\s\\[(SC\\d+)\\]$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5,
"code": 6
}
]
}
]
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"problemMatcher": [
{
"owner": "shellcheck",
"owner": "shellcheck-tty",
"pattern": [
{
"regexp": "^In\\s(.+)\\sline\\s(\\d+):$",
Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,19 @@ by setting `disable_matcher` to `true`.
with:
disable_matcher: true
```

## Change output format

Shellcheck can print output in these formats: `checkstyle`, `diff`, `gcc`, `json`, `json1`, `quiet`, `tty`. See some examples [here](https://github.com/koalaman/shellcheck/wiki/Integration#pick-the-output-format-that-makes-your-life-easier).
Only `tty` and `gcc` produce file annotations via problem matcher, default is `gcc`.

- `tty` has multi-line log messages, but all annotations are reported as errors
- `gcc` has single-line log messages, so it's easier to parse with a problem matcher (including correct severity annotation)

```yaml
...
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
with:
format: tty
```
14 changes: 10 additions & 4 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ inputs:
description: "Set to true to skip using problem-matcher"
required: false
default: "false"
format:
description: "Output format (checkstyle, diff, gcc, json, json1, quiet, tty)"
required: false
default: "gcc"
outputs:
files:
description: A list of files with issues
Expand All @@ -38,12 +42,13 @@ branding:
color: "gray-dark"
runs:
using: "composite"
steps:
steps:
- name: Enable problem-matcher
shell: bash
run: |
if [[ ${{ inputs.disable_matcher }} != "true" ]]; then
echo "::add-matcher::${{ github.action_path }}/.github/problem-matcher.json"
problem_matcher_file="${{ github.action_path }}/.github/problem-matcher-${{ inputs.format }}.json"
if [[ ${{ inputs.disable_matcher }} != "true" && -f "$problem_matcher_file" ]]; then
echo "::add-matcher::$problem_matcher_file"
fi
- name: Download shellcheck
Expand Down Expand Up @@ -78,6 +83,7 @@ runs:
if [[ -n "${{ inputs.severity }}" ]]; then
options+=("-S ${{ inputs.severity }}")
fi
options+=("--format=${{ inputs.format }}")
echo "::set-output name=options::${options[@]}"
- name: Gather excluded paths
Expand Down Expand Up @@ -190,7 +196,7 @@ runs:
"$file" || statuscode=$?;
done
fi
echo "::set-output name=statuscode::$statuscode"
- name: Print information
Expand Down

0 comments on commit 94e0aab

Please sign in to comment.