Skip to content

Update gitpod/workspace-full Docker digest to bec45eb #198

Update gitpod/workspace-full Docker digest to bec45eb

Update gitpod/workspace-full Docker digest to bec45eb #198

---
name: Shellcheck code in Markdown
on: [push]
concurrency:
# cancel any in-progress job or run
# https://github.com/kdeldycke/workflows/commit/8bee3ba877
# https://docs.github.com/actions/using-jobs/using-concurrency
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- name: Run shellcheck
run: |
# test shell syntax of Markdown code snippets
# https://github.com/dylanaraps/pure-sh-bible/commit/9d54e96011
set +o allexport
set -o noclobber
set -o noglob
set -o nounset
set -o verbose
trap 'printf "shellcheck complete\n"' EXIT INT
# Extract code blocks from the README.
while read -r line; do
test "${code-}" = '1' &&
test "${line-}" != '```' &&
printf '%s\n' "${line-}"
case "${line-}" in
'```sh' | '```bash' | '```zsh' | '```shell')
code='1'
;;
'```')
code=''
;;
*) ;;
esac
done < <(
# Markdown filename extensions
# https://github.com/github/linguist/blob/116d46aacc/lib/linguist/languages.yml#L3221-L3231
command find -- . \
-name '*.md' -o \
-name '*.markdown' -o \
-name '*.mdown' -o \
-name '*.mdwn' -o \
-name '*.mdx' -o \
-name '*.mkd' -o \
-name '*.mkdn' -o \
-name '*.mkdown' -o \
-name '*.ronn' -o \
-name '*.scd' -o \
-name '*.workbook'
) >'./codesnippets_code'
# Print the code blocks.
while read -r line; do
printf '%s\n' "${line-}"
done <'./codesnippets_code'
# Run shellcheck on the extracted code blocks
# and this test script itself.
# SC1071: allow shell directives outside sh, bash, ksh, dash
# SC1090: allow linking to a dynamic location
# SC1091: allow linking to, but not following, linked scripts
# SC2123: allow `PATH=...`
# SC2312: allow masking of return values
command shellcheck \
--exclude="SC1071,SC1090,SC1091,SC2123,SC2312" \
--wiki-link-count="$(command getconf UINT_MAX)" \
--check-sourced \
--enable=all \
--source-path=/dev/null \
--external-sources \
--include="" \
--shell=bash \
--severity=style \
--norc \
--color=always \
-- \
./codesnippets_code \
"$0" ||
exit 1
...