#!/usr/bin/env 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:?}" VERSION="${2:?}" export SYSTEMD_LOG_LEVEL=info if [[ ! -x "$BINARY" ]]; then echo "$BINARY is not an executable" exit 1 fi # --version prints something. Also catches case where args are ignored. if ! "$BINARY" --version | grep . >/dev/null; then echo "$(basename "$BINARY") --version output is empty" exit 2 fi # no --version output to stderr if "$BINARY" --version 2>&1 1>/dev/null | grep .; then echo "$(basename "$BINARY") --version prints to stderr" exit 3 fi # project version appears in version output out="$("$BINARY" --version)" if ! grep -F "$VERSION" >/dev/null <<<"$out"; then echo "$(basename "$BINARY") --version output does not match '$VERSION': $out" exit 4 fi