From 18c29dd450b4a9aba94e1c5fb55acf0e2e6aa8c8 Mon Sep 17 00:00:00 2001 From: ludeeus Date: Sat, 30 May 2020 11:44:01 +0200 Subject: [PATCH] Add exclude and testfiles --- .gitattributes | 1 + .github/workflows/push.yml | 6 ++++-- Dockerfile | 10 +--------- action.yaml | 14 ++++++++++++++ runaction.sh | 26 ++++++++++++++++++-------- testfiles/ignore/ignore.sh | 3 +++ testfiles/test | 4 ++++ testfiles/test.bash | 3 +++ testfiles/test.sh | 4 ++++ 9 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 .gitattributes create mode 100644 action.yaml create mode 100644 testfiles/ignore/ignore.sh create mode 100644 testfiles/test create mode 100644 testfiles/test.bash create mode 100644 testfiles/test.sh diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..94f480d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 107bbc6..8e77b5b 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -6,5 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - - name: Shellcheck - uses: ludeeus/action-shellcheck@master + - name: Run Shellcheck + uses: ${GITHUB_REPOSITORY}@${GITHUB_SHA} + with: + ignore: "ignore" diff --git a/Dockerfile b/Dockerfile index 49165ef..eddf64c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,12 +3,4 @@ FROM alpine:3.11.6 RUN apk add --no-cache shellcheck bash COPY runaction.sh /action/runaction.sh -ENTRYPOINT ["bash", "/action/runaction.sh"] - -LABEL "name"="ShellCheck" -LABEL "maintainer"="Ludeeus " -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" +ENTRYPOINT ["bash", "/action/runaction.sh"] \ No newline at end of file diff --git a/action.yaml b/action.yaml new file mode 100644 index 0000000..5009b95 --- /dev/null +++ b/action.yaml @@ -0,0 +1,14 @@ +name: "ShellCheck" +author: "Ludeeus " +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' \ No newline at end of file diff --git a/runaction.sh b/runaction.sh index 9f1aefe..3450120 100755 --- a/runaction.sh +++ b/runaction.sh @@ -2,13 +2,23 @@ cd "$GITHUB_WORKSPACE" || exit 1 -declare err +declare statuscode declare -a filepaths +declare -a excludes 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' \ -o -path '*/.bash*' \ @@ -37,19 +47,19 @@ readarray -d '' filepaths < <(find . '(' \ -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 head -n1 "$file" | grep -Eqs "^#! */[^ ]*/[abkz]*sh" || continue filepaths+=("$file") done -if find . -path '*bin/*/*' -type f -perm /111 -print | +if find . "${excludes[@]}" -path '*bin/*/*' -type f -perm /111 -print | grep . then echo >&2 "::warning:: subdirectories of bin directories are not usable via PATH" 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 . then echo >&2 "::warning:: programs in PATH should not have a filename suffix" @@ -57,7 +67,7 @@ fi for file in "${filepaths[@]}"; do echo "::debug:: Checking $file" - shellcheck "$file" || err=$? + shellcheck "$file" || statuscode=$? done -exit "$err" \ No newline at end of file +exit "$statuscode" \ No newline at end of file diff --git a/testfiles/ignore/ignore.sh b/testfiles/ignore/ignore.sh new file mode 100644 index 0000000..a77dd19 --- /dev/null +++ b/testfiles/ignore/ignore.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo $test \ No newline at end of file diff --git a/testfiles/test b/testfiles/test new file mode 100644 index 0000000..9470e18 --- /dev/null +++ b/testfiles/test @@ -0,0 +1,4 @@ +#!/bin/bash + +test="test" +echo "$test" \ No newline at end of file diff --git a/testfiles/test.bash b/testfiles/test.bash new file mode 100644 index 0000000..3ea25c6 --- /dev/null +++ b/testfiles/test.bash @@ -0,0 +1,3 @@ +#!/bin/bash +test="test" +echo "$test" \ No newline at end of file diff --git a/testfiles/test.sh b/testfiles/test.sh new file mode 100644 index 0000000..cfb414c --- /dev/null +++ b/testfiles/test.sh @@ -0,0 +1,4 @@ +#!/usr/bin/sh + +test="test" +echo "$test" \ No newline at end of file