Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix warnings reported by shellcheck #61

Merged
merged 2 commits into from
Sep 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/scandir.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: 'scandir'

on:
on:
push:
branches: ["master"]
pull_request:
Expand All @@ -25,8 +25,8 @@ jobs:
scandir: testfiles/scandir

- name: Verify check
run: |
expect="testfiles/scandir/test.bash"
run: |
expect="testfiles/scandir/run[[:space:]]me.bash"
notexpect="testfiles/test.bash"

if [[ ! "${{ steps.one.outputs.files }}" =~ $expect ]];then
Expand All @@ -35,7 +35,7 @@ jobs:
elif [[ "${{ steps.one.outputs.files }}" =~ $notexpect ]];then
echo "::error:: Expected file $notexpect found in ${{ steps.one.outputs.files }}"
exit 1
fi
fi

- name: Run ShellCheck
uses: ./
Expand All @@ -45,7 +45,7 @@ jobs:
ignore_paths: ignore

- name: Verify check
run: |
run: |
expect="testfiles/scandir/test.bash"
notexpect="testfiles/test.bash"

Expand All @@ -55,4 +55,4 @@ jobs:
elif [[ "${{ steps.two.outputs.files }}" =~ $notexpect ]];then
echo "::error:: Expected file $notexpect found in ${{ steps.two.outputs.files }}"
exit 1
fi
fi
63 changes: 31 additions & 32 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ inputs:
outputs:
files:
description: A list of files with issues
value: ${{ steps.filepaths.outputs.filepaths }}
value: ${{ steps.check.outputs.filepaths }}
options:
description: The options used
value: ${{ steps.options.outputs.options }}
Expand Down Expand Up @@ -111,22 +111,22 @@ runs:
if [[ -n "${{ inputs.ignore }}" ]]; then
echo "::warning::ignore is deprecated. Please use ignore_paths instead"
for path in ${{ inputs.ignore }}; do
echo "::debug:: Adding "$path" to excludes"
echo "::debug:: Adding '$path' to excludes"
excludes+=("! -path \"*./$path/*\"")
excludes+=("! -path \"*/$path/*\"")
excludes+=("! -path \"$path\"")
done
else
for path in ${{ inputs.ignore_paths }}; do
echo "::debug:: Adding "$path" to excludes"
echo "::debug:: Adding '$path' to excludes"
excludes+=("! -path \"*./$path/*\"")
excludes+=("! -path \"*/$path/*\"")
excludes+=("! -path \"$path\"")
done
fi

for name in ${{ inputs.ignore_names }}; do
echo "::debug:: Adding "$name" to excludes"
echo "::debug:: Adding '$name' to excludes"
excludes+=("! -name $name")
done
echo "::set-output name=excludes::${excludes[@]}"
Expand All @@ -139,20 +139,24 @@ runs:
run: |
declare -a files
for file in ${{ inputs.additional_files }}; do
echo "::debug:: Adding "$file" to excludes"
echo "::debug:: Adding '$file' to excludes"
files+=("-o -name \"*$file\"")
done
echo "::set-output name=files::${files[@]}"

- name: Gather base file paths
- name: Run the check
shell: bash
id: filepaths
id: check
run: |
statuscode=0
declare -a filepaths
shebangregex="^#! */[^ ]*/(env *)?[abk]*sh"

for path in $(find "${{ inputs.scandir }}" \
-type f -type f ${{ steps.exclude.outputs.excludes }} \
while IFS= read -r -d '' file; do
filepaths+=("$file")
done < <(find "${{ inputs.scandir }}" \
${{ steps.exclude.outputs.excludes }} \
-type f \
'(' \
-name '*.bash' \
-o -name '.bashrc' \
Expand Down Expand Up @@ -181,44 +185,39 @@ runs:
-o -path '*/profile' \
-o -name '*.shlib' \
${{ steps.additional.outputs.files }} \
')'\
-print); do
filepaths+=("$path");
done
')' \
-print0)

for file in $(find "${{ inputs.scandir }}" ${{ steps.exclude.outputs.excludes }} -type f ! -name '*.*' -perm /111 -print); do
while IFS= read -r -d '' file; do
head -n1 "$file" | grep -Eqs "$shebangregex" || continue
filepaths+=("$file");
done
echo "::set-output name=filepaths::${filepaths[@]}"

- name: Run the file check
id: check
shell: bash
run: |
statuscode=0
filepaths+=("$file")
done < <(find "${{ inputs.scandir }}" \
${{ steps.exclude.outputs.excludes }} \
-type f ! -name '*.*' -perm /111 \
-print0)

if [[ -n "${{ inputs.check_together }}" ]]; then
"${{ github.action_path }}/shellcheck" \
${{ steps.options.outputs.options }} \
${{ steps.filepaths.outputs.filepaths }} || statuscode=$?
"${{ github.action_path }}/shellcheck" \
${{ steps.options.outputs.options }} \
"${filepaths[@]}" || statuscode=$?
else
for file in ${{ steps.filepaths.outputs.filepaths }}; do
echo "::debug::Checking $file"
for file in "${filepaths[@]}"; do
echo "::debug::Checking '$file'"
"${{ github.action_path }}/shellcheck" \
${{ steps.options.outputs.options }} \
"$file" || statuscode=$?;
${{ steps.options.outputs.options }} \
"$file" || statuscode=$?
done
fi

echo "::set-output name=filepaths::${filepaths[@]}"
echo "::set-output name=statuscode::$statuscode"

- name: Print information
shell: bash
run: |
echo "Files: ${{steps.filepaths.outputs.filepaths}}"
echo "Files: ${{ steps.check.outputs.filepaths }}"
echo "Excluded: ${{ steps.exclude.outputs.excludes }}"
echo "Options: ${{ steps.options.outputs.options }}"
echo "Status code: ${{steps.check.outputs.statuscode}}"
echo "Status code: ${{ steps.check.outputs.statuscode }}"

exit ${{steps.check.outputs.statuscode}}
3 changes: 3 additions & 0 deletions testfiles/scandir/run me.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env bash

echo "I love spaces"