]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tools: shellcheck-ify most of the tool scripts 19370/head
authorFrantisek Sumsal <frantisek@sumsal.cz>
Tue, 20 Apr 2021 11:02:02 +0000 (13:02 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Tue, 20 Apr 2021 18:11:13 +0000 (20:11 +0200)
13 files changed:
tools/add-git-hook.sh
tools/check-api-docs.sh
tools/check-directives.sh
tools/check-help.sh
tools/find-build-dir.sh
tools/find-double-newline.sh
tools/find-tabs.sh
tools/meson-apply-m4.sh
tools/meson-make-symlink.sh
tools/meson-vcs-tag.sh
tools/update-hwdb-autosuspend.sh
tools/update-hwdb.sh
tools/update-syscall-tables.sh

index 66bbcd64ead3a7ce1e9a2a054448af64d03d7b5a..8cff62e864da9c9a1733b775d1743fe2aa7ca95c 100755 (executable)
@@ -2,9 +2,9 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
 
-cd "$MESON_SOURCE_ROOT"
+cd "${MESON_SOURCE_ROOT:?}"
 
-if [ ! -f .git/hooks/pre-commit.sample -o -f .git/hooks/pre-commit ]; then
+if [ ! -f .git/hooks/pre-commit.sample ] || [ -f .git/hooks/pre-commit ]; then
     exit 2 # not needed
 fi
 
index 283e7a64d741a16d31289a761fb4df2387ff0d17..0bf053b5ffbf7155836800a93d6bb19533270aa0 100755 (executable)
@@ -1,31 +1,32 @@
-#!/bin/sh
+#!/bin/bash
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
+set -o pipefail
 
 sd_good=0
 sd_total=0
 udev_good=0
 udev_total=0
 
-deprecated="
+deprecated=(
     -e sd_bus_try_close
     -e sd_bus_process_priority
     -e sd_bus_message_get_priority
     -e sd_bus_message_set_priority
     -e sd_seat_can_multi_session
     -e sd_journal_open_container
-"
+)
 
-for symbol in `nm -g --defined-only "$@" | grep " T " | cut -d" " -f3 | grep -wv $deprecated | sort -u` ; do
-    if test -f ${MESON_BUILD_ROOT}/man/$symbol.3 ; then
+for symbol in $(nm -g --defined-only "$@" | grep " T " | cut -d" " -f3 | grep -wv "${deprecated[@]}" | sort -u); do
+    if test -f "${MESON_BUILD_ROOT:?}/man/$symbol.3"; then
         echo "✓ Symbol $symbol() is documented."
         good=1
     else
-        printf "  \x1b[1;31mSymbol $symbol() lacks documentation.\x1b[0m\n"
+        echo -e "  \x1b[1;31mSymbol $symbol() lacks documentation.\x1b[0m"
         good=0
     fi
 
-    case $symbol in
+    case "$symbol" in
         sd_*)
             ((sd_good+=good))
             ((sd_total+=1))
index 2274d36e6016b8e234131e9f784ed643b0520bd5..0661da4d3b2d69ad4106a4c5ea4c2fdde1861dae 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
+set -o pipefail
 
 SOURCE_ROOT="${1:?Missing argument: project source root}"
 BUILD_ROOT="${2:?Missing argument: project build root}"
index 721dec4c64f93445e17d24bbadc5fa94bd32ef33..8e7d236dd9014873319f8a2c7251ff118005e80b 100755 (executable)
@@ -1,30 +1,41 @@
-#!/bin/sh
+#!/bin/bash
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
+set -o pipefail
 
+# Note: `grep ... >/dev/null` instead of just `grep -q` is used intentionally
+#       here, since `grep -q` exits on the first match causing SIGPIPE being
+#       sent to the sender.
+
+BINARY="${1:?}"
 export SYSTEMD_LOG_LEVEL=info
 
+if [[ ! -x "$BINARY" ]]; then
+    echo "$BINARY is not an executable"
+    exit 1
+fi
+
 # output width
-if "$1"  --help | grep -v 'default:' | grep -E -q '.{80}.'; then
-    echo "$(basename "$1") --help output is too wide:"
-    "$1"  --help | awk 'length > 80' | grep -E --color=yes '.{80}'
+if "$BINARY" --help | grep -v 'default:' | grep -E '.{80}.' >/dev/null; then
+    echo "$(basename "$BINARY") --help output is too wide:"
+    "$BINARY" --help | awk 'length > 80' | grep -E --color=yes '.{80}'
     exit 1
 fi
 
 # --help prints something. Also catches case where args are ignored.
-if ! "$1"  --help | grep -q .; then
-    echo "$(basename "$1") --help output is empty."
+if ! "$BINARY" --help | grep . >/dev/null; then
+    echo "$(basename "$BINARY") --help output is empty."
     exit 2
 fi
 
 # no --help output to stdout
-if "$1" --help 2>&1 1>/dev/null | grep .; then
-    echo "$(basename "$1") --help prints to stderr"
+if "$BINARY" --help 2>&1 1>/dev/null | grep .; then
+    echo "$(basename "$BINARY") --help prints to stderr"
     exit 3
 fi
 
 # error output to stderr
-if ! "$1" --no-such-parameter 2>&1 1>/dev/null | grep -q .; then
-    echo "$(basename "$1") with an unknown parameter does not print to stderr"
+if ! ("$BINARY" --no-such-parameter 2>&1 1>/dev/null || :) | grep . >/dev/null; then
+    echo "$(basename "$BINARY") with an unknown parameter does not print to stderr"
     exit 4
 fi
index e449b6e8650aa66e051748b87b6b39160bcc2f33..79a79fcc58e4f866347e21e7c71f099173d83662 100755 (executable)
@@ -1,12 +1,12 @@
 #!/bin/sh
 # SPDX-License-Identifier: LGPL-2.1-or-later
-set -e
+set -eu
 
 # Try to guess the build directory:
 # we look for subdirectories of the parent directory that look like ninja build dirs.
 
-if [ -n "$BUILD_DIR" ]; then
-    echo "$(realpath "$BUILD_DIR")"
+if [ -n "${BUILD_DIR:=}" ]; then
+    realpath "$BUILD_DIR"
     exit 0
 fi
 
@@ -14,20 +14,20 @@ root="$(dirname "$(realpath "$0")")"
 
 found=
 for i in "$root"/../*/build.ninja; do
-    c="$(dirname $i)"
+    c="$(dirname "$i")"
     [ -d "$c" ] || continue
     [ "$(basename "$c")" != mkosi.builddir ] || continue
 
     if [ -n "$found" ]; then
-        echo 'Found multiple candidates, specify build directory with $BUILD_DIR' >&2
+        echo "Found multiple candidates, specify build directory with \$BUILD_DIR" >&2
         exit 2
     fi
     found="$c"
 done
 
 if [ -z "$found" ]; then
-    echo 'Specify build directory with $BUILD_DIR' >&2
+    echo "Specify build directory with \$BUILD_DIR" >&2
     exit 1
 fi
 
-echo "$(realpath $found)"
+realpath "$found"
index 7ea6de8311154cdc9218b7ffbdc22a99626ebf1f..2999a58c0b9d03eacdb568ada3e508fcadd4cdb5 100755 (executable)
@@ -1,38 +1,40 @@
 #!/bin/sh
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
-TOP=`git rev-parse --show-toplevel`
+set -eu
 
-case "$1" in
+TOP="$(git rev-parse --show-toplevel)"
+
+case "${1:-}" in
     recdiff)
-        if [ "$2" = "" ] ; then
+        if [ "${2:-}" = "" ] ; then
             DIR="$TOP"
         else
             DIR="$2"
         fi
 
-        find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 diff \{\} \;
+        find "$DIR" -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec "$0" diff \{\} \;
         ;;
 
     recpatch)
-        if [ "$2" = "" ] ; then
+        if [ "${2:-}" = "" ] ; then
             DIR="$TOP"
         else
             DIR="$2"
         fi
 
-        find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 patch \{\} \;
+        find "$DIR" -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec "$0" patch \{\} \;
         ;;
 
     diff)
-        T=`mktemp`
-        sed '/^$/N;/^\n$/D' < "$2" > "$T"
+        T="$(mktemp)"
+        sed '/^$/N;/^\n$/D' <"${2:?}" >"$T"
         diff -u "$2" "$T"
         rm -f "$T"
         ;;
 
     patch)
-        sed -i '/^$/N;/^\n$/D' "$2"
+        sed -i '/^$/N;/^\n$/D' "${2:?}"
         ;;
 
     *)
index 54d922975c3d0e9cb6945aac8ee0369767bec7bf..6cea339ac6278787cc79a604f6657da23bbd50b5 100755 (executable)
@@ -1,38 +1,40 @@
 #!/bin/sh
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
-TOP=`git rev-parse --show-toplevel`
+set -eu
 
-case "$1" in
+TOP="$(git rev-parse --show-toplevel)"
+
+case "${1:-}" in
     recdiff)
-        if [ "$2" = "" ] ; then
+        if [ "${2:-}" = "" ] ; then
             DIR="$TOP"
         else
             DIR="$2"
         fi
 
-        find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 diff \{\} \;
+        find "$DIR" -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec "$0" diff \{\} \;
         ;;
 
     recpatch)
-        if [ "$2" = "" ] ; then
+        if [ "${2:-}" = "" ] ; then
             DIR="$TOP"
         else
             DIR="$2"
         fi
 
-        find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 patch \{\} \;
+        find "$DIR" -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec "$0" patch \{\} \;
         ;;
 
     diff)
-        T=`mktemp`
-        sed 's/\t/        /g' < "$2" > "$T"
+        T="$(mktemp)"
+        sed 's/\t/        /g' <"${2:?}" >"$T"
         diff -u "$2" "$T"
         rm -f "$T"
         ;;
 
     patch)
-        sed -i 's/\t/        /g' "$2"
+        sed -i 's/\t/        /g' "${2:?}"
         ;;
 
     *)
index 7b4801ff94651e425a49d173e3ce6e167bf6f68d..35d8d159ef3a6a6c4631436e5b89e0cf09a6eaf4 100755 (executable)
@@ -1,25 +1,21 @@
-#!/bin/sh
+#!/bin/bash
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
 
-CONFIG=$1
-TARGET=$2
+CONFIG="${1:?Missing path to config.h}"
+TARGET="${2:?Missing target m4 file}"
 
-if [ $# -ne 2 ]; then
-    echo 'Invalid number of arguments.'
-    exit 1
-fi
-
-if [ ! -f $CONFIG ]; then
+if [ ! -f "$CONFIG" ]; then
     echo "$CONFIG not found."
     exit 2
 fi
 
-if [ ! -f $TARGET ]; then
+if [ ! -f "$TARGET" ]; then
     echo "$TARGET not found."
     exit 3
 fi
 
-DEFINES=$(awk '$1 == "#define" && $3 == "1" { printf "-D%s ", $2 }' $CONFIG)
+DEFINES=()
+mapfile -t DEFINES < <(awk '$1 == "#define" && $3 == "1" { printf "-D%s\n", $2 }' "$CONFIG")
 
-m4 -P $DEFINES $TARGET
+m4 -P "${DEFINES[@]}" "$TARGET"
index 96f58922810a1b6c4f2f54368a3520f22892369d..653a73b0bd460f2e79ffab6abde8a517d4ba7a1c 100755 (executable)
@@ -2,6 +2,9 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
 
+SOURCE="${1:?}"
+TARGET="${2:?}"
+
 if [ "${MESON_INSTALL_QUIET:-0}" = 1 ] ; then
     VERBOSE=""
 else
@@ -11,9 +14,9 @@ fi
 # this is needed mostly because $DESTDIR is provided as a variable,
 # and we need to create the target directory...
 
-mkdir -${VERBOSE}p "$(dirname "${DESTDIR:-}$2")"
-if [ "$(dirname $1)" = . -o "$(dirname $1)" = .. ]; then
-    ln -${VERBOSE}fs -T -- "$1" "${DESTDIR:-}$2"
+mkdir -${VERBOSE}p "$(dirname "${DESTDIR:-}$TARGET")"
+if [ "$(dirname "$SOURCE")" = . ] || [ "$(dirname "$SOURCE")" = .. ]; then
+    ln -${VERBOSE}fs -T -- "$SOURCE" "${DESTDIR:-}$TARGET"
 else
-    ln -${VERBOSE}fs -T --relative -- "${DESTDIR:-}$1" "${DESTDIR:-}$2"
+    ln -${VERBOSE}fs -T --relative -- "${DESTDIR:-}$SOURCE" "${DESTDIR:-}$TARGET"
 fi
index 1ec04c76b791d022e94c3afb7b53477203662d41..8ce692498adabba42c4b799d769123ceceafe096 100755 (executable)
@@ -4,8 +4,8 @@
 set -eu
 set -o pipefail
 
-dir="$1"
-fallback="$2"
+dir="${1:?}"
+fallback="${2:?}"
 
 # Apparently git describe has a bug where it always considers the work-tree
 # dirty when invoked with --git-dir (even though 'git status' is happy). Work
index 7d5a9a8cf5a54bf7861c2d14758977bdafcc953d..c69773087dfcbbd27871142d085ef10c66545f35 100755 (executable)
@@ -2,7 +2,7 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
 
-cd "$1"
+cd "${1:?}"
 
 (curl --fail -L 'https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/udev/gen_autosuspend_rules.py?format=TEXT'; echo) \
     | base64 -d > tools/chromiumos/gen_autosuspend_rules.py
index 773a959dcf6b9b1e972a63f0d35c41ff189d99ea..abbbb82f4bc4d1a988c21023ab6e7574d7afb04f 100755 (executable)
@@ -2,7 +2,7 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
 
-cd "$1"
+cd "${1:?}"
 
 unset permissive
 if [ "${2:-}" = "-p" ]; then
@@ -28,6 +28,6 @@ if [ "${2:-}" != "-n" ]; then (
 set -x
 ./acpi-update.py >20-acpi-vendor.hwdb.base
 patch -p0 -o- 20-acpi-vendor.hwdb.base <20-acpi-vendor.hwdb.patch >20-acpi-vendor.hwdb
-! diff -u 20-acpi-vendor.hwdb.base 20-acpi-vendor.hwdb >20-acpi-vendor.hwdb.patch
+diff -u 20-acpi-vendor.hwdb.base 20-acpi-vendor.hwdb >20-acpi-vendor.hwdb.patch && exit 1
 
 ./ids_parser.py
index 4f56aeceddcf4236eb9e4052d388efd24c03813d..5aa85368825a8731e5e892e86a7323d238aaabed 100755 (executable)
@@ -2,10 +2,10 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -eu
 
-cd "$1" && shift
+cd "${1:?}" && shift
 
 curl --fail -L -o syscall-list.txt 'https://raw.githubusercontent.com/hrw/syscalls-table/master/syscall-names.text'
 
 for arch in "$@"; do
-    curl --fail -L -o syscalls-$arch.txt "https://raw.githubusercontent.com/hrw/syscalls-table/master/tables/syscalls-$arch"
+    curl --fail -L -o "syscalls-$arch.txt" "https://raw.githubusercontent.com/hrw/syscalls-table/master/tables/syscalls-$arch"
 done