1
0
Fork 0
mirror of https://github.com/ludeeus/action-shellcheck.git synced 2024-08-16 10:09:53 +02:00
shellcheck/runaction.sh
Martin Kealey 9445381284
apply to all Bash, Ksh, Zsh & POSIX Shell files
Does not need bash to run; standard posix sh suffices.

Apply shellcheck to:

* files with shbang lines that indicate a shell (sh, bash, ash, bsh, ksh, zsh)

* typical home directory shell startup files:
  for posix sh & all shells: .profile
  for bash: .bashrc, .bash_aliases, .bash_completion, .bash_login, .bash_logout, .bash_profile
  for ksh: .profile
  for zsh: .zprofile, .zlogin, .zlogout, .zshenv, .zshrc

* typical system-wide shell startup files:
  for posix sh & all shells: /etc/profile
  for bash: /etc/bashrc, /etc/bash_profile
  for ksh:
  for zsh: /etc/zprofile, /etc/zlogin, /etc/zlogout, /etc/zshenv, /etc/zshrc

* files with suffixes: .bash, .zsh, .ksh, & .sh
2019-11-20 16:45:19 +11:00

43 lines
1.3 KiB
Bash

#!/bin/sh
cd "$GITHUB_WORKSPACE" || exit
find . '(' -name '*.bash' \
-o -path '*/.bash*' -o -path '*/bash*' \
\
-o -name '*.ksh' \
-o -name 'ksh*' \
-o -path '*/.ksh*' -o -path '*/ksh*' \
\
-o -name '*.zsh' \
-o -name '.zlogin*' -o -name 'zlogin*' \
-o -name '.zlogout*' -o -name 'zlogout*' \
-o -name '.zprofile*' -o -name 'zprofile*' \
-o -path '*/.zsh*' -o -path '*/zsh*' \
\
-o -name '*.sh' \
-o -path '*/.profile*' -o -path '*/profile*' \
-o -path '*/.shlib*' -o -path '*/shlib*' \
')' -exec shellcheck {} + || exit
# shellcheck disable=SC2016
find . -type f ! -name '*.*' -perm /111 -exec sh -c '
for f
do
head -n1 "$f" | grep -Eqs "^#! */[^ ]*/[abkz]*sh" || continue
shellcheck "$f" || err=$?
done
exit $err
' _ {} + || exit
if find . -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 |
grep .
then
echo >&2 "WARNING: programs in PATH should not have a filename suffix"
fi