#!/usr/bin/env bash set -eu die() { echo >&2 "$@" exit 1 } # shellcheck disable=SC1007 TEST_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) # shellcheck source=./.environment.sh . "${TEST_DIR}/.environment.sh" check_bats_core() { if ! "${TEST_DIR}/lib/bats-core/bin/bats" --version >/dev/null 2>&1; then die "ERROR: bats-core submodule is required. Please run 'git submodule init; git submodule update' and retry." fi } check_curl() { if ! command -v curl >/dev/null; then die "missing required program 'curl'" fi } check_python3() { if ! command -v python3 >/dev/null; then die "missing required program 'python3'" fi } check_jq() { if ! command -v jq >/dev/null; then die "Missing required program 'jq'" fi } check_nc() { if ! command -v nc >/dev/null; then die "missing required program 'nc' (package 'netcat-openbsd')" fi } check_base64() { if ! command -v base64 >/dev/null; then die "missing required program 'base64'" fi } check_yq() { # shellcheck disable=SC2016 howto_install='You can install it with your favorite package manager (including snap) or with "go install github.com/mikefarah/yq/v4@latest" and add ~/go/bin to $PATH.' if ! command -v yq >/dev/null; then die "Missing required program 'yq'. ${howto_install}" fi if ! (yq --version | grep mikefarah >/dev/null); then die "yq exists but it's not the one we need (mikefarah/yq). ${howto_install}" fi } check_daemonizer() { if ! command -v daemonize >/dev/null; then die "missing required program 'daemonize' (package 'daemonize' or 'https://github.com/bmc/daemonize')" fi } check_cfssl() { # shellcheck disable=SC2016 howto_install='You can install it with "go install github.com/cloudflare/cfssl/cmd/cfssl@latest" and add ~/go/bin to $PATH.' if ! command -v cfssl >/dev/null; then die "Missing required program 'cfssl'. ${howto_install}" fi } check_cfssljson() { # shellcheck disable=SC2016 howto_install='You can install it with "go install github.com/cloudflare/cfssl/cmd/cfssljson@latest" and add ~/go/bin to $PATH.' if ! command -v cfssljson >/dev/null; then die "Missing required program 'cfssljson'. ${howto_install}" fi } check_gocovmerge() { if ! command -v gocovmerge >/dev/null; then die "missing required program 'gocovmerge'. You can install it with \"go install github.com/wadey/gocovmerge@latest\"" fi } check_bats_core check_curl check_daemonizer check_cfssl check_cfssljson check_jq check_nc check_base64 check_python3 check_yq if [[ -n "${TEST_COVERAGE}" ]]; then check_gocovmerge fi