mirror of
https://github.com/ludeeus/action-shellcheck.git
synced 2024-08-16 10:09:53 +02:00
Add exclude and testfiles
This commit is contained in:
parent
c07d062aa5
commit
18c29dd450
9 changed files with 52 additions and 19 deletions
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* text=auto eol=lf
|
6
.github/workflows/push.yml
vendored
6
.github/workflows/push.yml
vendored
|
@ -6,5 +6,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@master
|
||||||
- name: Shellcheck
|
- name: Run Shellcheck
|
||||||
uses: ludeeus/action-shellcheck@master
|
uses: ${GITHUB_REPOSITORY}@${GITHUB_SHA}
|
||||||
|
with:
|
||||||
|
ignore: "ignore"
|
||||||
|
|
|
@ -4,11 +4,3 @@ RUN apk add --no-cache shellcheck bash
|
||||||
|
|
||||||
COPY runaction.sh /action/runaction.sh
|
COPY runaction.sh /action/runaction.sh
|
||||||
ENTRYPOINT ["bash", "/action/runaction.sh"]
|
ENTRYPOINT ["bash", "/action/runaction.sh"]
|
||||||
|
|
||||||
LABEL "name"="ShellCheck"
|
|
||||||
LABEL "maintainer"="Ludeeus <hi@ludeeus.dev>"
|
|
||||||
LABEL "version"="0.1.0"
|
|
||||||
LABEL "com.github.actions.name"="ShellCheck"
|
|
||||||
LABEL "com.github.actions.description"="GitHub action for ShellCheck."
|
|
||||||
LABEL "com.github.actions.icon"="terminal"
|
|
||||||
LABEL "com.github.actions.color"="black"
|
|
||||||
|
|
14
action.yaml
Normal file
14
action.yaml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
name: "ShellCheck"
|
||||||
|
author: "Ludeeus <hi@ludeeus.dev>"
|
||||||
|
description: "GitHub action for ShellCheck."
|
||||||
|
inputs:
|
||||||
|
ignore:
|
||||||
|
description: 'Paths to ignore when running ShellCheck'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
runs:
|
||||||
|
using: 'docker'
|
||||||
|
image: 'Dockerfile'
|
||||||
|
branding:
|
||||||
|
icon: 'terminal'
|
||||||
|
color: 'gray-dark'
|
26
runaction.sh
26
runaction.sh
|
@ -2,13 +2,23 @@
|
||||||
|
|
||||||
cd "$GITHUB_WORKSPACE" || exit 1
|
cd "$GITHUB_WORKSPACE" || exit 1
|
||||||
|
|
||||||
declare err
|
declare statuscode
|
||||||
declare -a filepaths
|
declare -a filepaths
|
||||||
|
declare -a excludes
|
||||||
declare -a tmp
|
declare -a tmp
|
||||||
|
|
||||||
err=0
|
statuscode=0
|
||||||
|
|
||||||
readarray -d '' filepaths < <(find . '(' \
|
excludes+=( ! -path *./.git/* )
|
||||||
|
for path in ${INPUT_IGNORE}; do
|
||||||
|
[[ ${path#./*} != "$path" ]] || path=./${path}
|
||||||
|
|
||||||
|
echo "::debug:: Adding '${path}' to excludes"
|
||||||
|
excludes+=(! -path *"${path}"* )
|
||||||
|
done
|
||||||
|
|
||||||
|
readarray -d '' filepaths < <(find . "${excludes[@]}" \
|
||||||
|
'(' \
|
||||||
\
|
\
|
||||||
-name '*.bash' \
|
-name '*.bash' \
|
||||||
-o -path '*/.bash*' \
|
-o -path '*/.bash*' \
|
||||||
|
@ -37,19 +47,19 @@ readarray -d '' filepaths < <(find . '(' \
|
||||||
-print0)
|
-print0)
|
||||||
|
|
||||||
|
|
||||||
readarray -d '' tmp < <(find . -type f ! -name '*.*' -perm /111 -print0)
|
readarray -d '' tmp < <(find . "${excludes[@]}" -type f ! -name '*.*' -perm /111 -print0)
|
||||||
for file in "${tmp[@]}"; do
|
for file in "${tmp[@]}"; do
|
||||||
head -n1 "$file" | grep -Eqs "^#! */[^ ]*/[abkz]*sh" || continue
|
head -n1 "$file" | grep -Eqs "^#! */[^ ]*/[abkz]*sh" || continue
|
||||||
filepaths+=("$file")
|
filepaths+=("$file")
|
||||||
done
|
done
|
||||||
|
|
||||||
if find . -path '*bin/*/*' -type f -perm /111 -print |
|
if find . "${excludes[@]}" -path '*bin/*/*' -type f -perm /111 -print |
|
||||||
grep .
|
grep .
|
||||||
then
|
then
|
||||||
echo >&2 "::warning:: subdirectories of bin directories are not usable via PATH"
|
echo >&2 "::warning:: subdirectories of bin directories are not usable via PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if find . -path '*bin/*' -name '*.*' -type f -perm /111 -perm /444 -print |
|
if find . "${excludes[@]}" -path '*bin/*' -name '*.*' -type f -perm /111 -perm /444 -print |
|
||||||
grep .
|
grep .
|
||||||
then
|
then
|
||||||
echo >&2 "::warning:: programs in PATH should not have a filename suffix"
|
echo >&2 "::warning:: programs in PATH should not have a filename suffix"
|
||||||
|
@ -57,7 +67,7 @@ fi
|
||||||
|
|
||||||
for file in "${filepaths[@]}"; do
|
for file in "${filepaths[@]}"; do
|
||||||
echo "::debug:: Checking $file"
|
echo "::debug:: Checking $file"
|
||||||
shellcheck "$file" || err=$?
|
shellcheck "$file" || statuscode=$?
|
||||||
done
|
done
|
||||||
|
|
||||||
exit "$err"
|
exit "$statuscode"
|
3
testfiles/ignore/ignore.sh
Normal file
3
testfiles/ignore/ignore.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo $test
|
4
testfiles/test
Normal file
4
testfiles/test
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
test="test"
|
||||||
|
echo "$test"
|
3
testfiles/test.bash
Normal file
3
testfiles/test.bash
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
test="test"
|
||||||
|
echo "$test"
|
4
testfiles/test.sh
Normal file
4
testfiles/test.sh
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/sh
|
||||||
|
|
||||||
|
test="test"
|
||||||
|
echo "$test"
|
Loading…
Reference in a new issue