From ad92518fe44279b69308aaf0a757469f5bf42910 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Mon, 22 Jul 2019 16:07:40 +0200 Subject: [CI] Run shellcheck and shfmt (#2454) * [CI] Run shellcheck and shfmt Cf. https://github.com/FreshRSS/FreshRSS/pull/2436#discussion_r305640019 * rename * no need for disable anymore * also remove leftover indentation flags even if it makes no difference to syntax checking * define colors and reset before exit for local use --- tests/shellchecks.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 tests/shellchecks.sh (limited to 'tests') diff --git a/tests/shellchecks.sh b/tests/shellchecks.sh new file mode 100755 index 000000000..648f2766e --- /dev/null +++ b/tests/shellchecks.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# Based on https://github.com/koreader/koreader/blob/master/.ci/helper_shellchecks.sh + +ANSI_RED="\\033[31;1m" +ANSI_GREEN="\\033[32;1m" +ANSI_RESET="\\033[0m" + +mapfile -t shellscript_locations < <({ git grep -lE '^#!(/usr)?/bin/(env )?(bash|sh)' && git ls-files ./*.sh; } | sort | uniq) + +SHELLSCRIPT_ERROR=0 + +for shellscript in "${shellscript_locations[@]}"; do + echo -e "${ANSI_GREEN}Running shellcheck on ${shellscript}" + shellcheck "${shellscript}" || SHELLSCRIPT_ERROR=1 + echo -e "${ANSI_GREEN}Running shfmt on ${shellscript}" + if ! shfmt "${shellscript}" >/dev/null 2>&1; then + echo -e "${ANSI_RED}Warning: ${shellscript} contains the following problem:" + shfmt "${shellscript}" || SHELLSCRIPT_ERROR=1 + continue + fi + if [ "$(cat "${shellscript}")" != "$(shfmt "${shellscript}")" ]; then + echo -e "${ANSI_RED}Warning: ${shellscript} does not abide by coding style, diff for expected style:" + shfmt "${shellscript}" | diff "${shellscript}" - || SHELLSCRIPT_ERROR=1 + fi +done + +echo -ne "${ANSI_RESET}" + +exit "${SHELLSCRIPT_ERROR}" -- cgit v1.2.3 From b12d261407a5daccb9cbda1801a58fb9799d61a2 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Wed, 24 Jul 2019 05:26:51 +0200 Subject: tests: add shellchecks and shfmt to README (#2458) See https://github.com/FreshRSS/FreshRSS/pull/2454#discussion_r306174996 --- tests/README.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tests') diff --git a/tests/README.md b/tests/README.md index 3dd9602be..fbc38ac4d 100644 --- a/tests/README.md +++ b/tests/README.md @@ -5,3 +5,7 @@ cd ./tests/ wget https://phar.phpunit.de/phpunit.phar php phpunit.phar --bootstrap bootstrap.php ``` + +The `shellchecks.sh` script is used to safeguard shell scripts from common +shell script bugs and to ensure a consistent style. +It requires [ShellCheck](https://www.shellcheck.net/) and [shfmt](https://github.com/mvdan/sh). -- cgit v1.2.3