contrib/cirrus/mac_runner.sh
#!/bin/bash
#
# This script is what runs mac tests. It is invoked from .cirrus.yml
#
# Yep, some of this is adapted from runner.sh. We can't actually
# use that as a library, because Macintosh bash and awk lack
# features we need.

set -euo pipefail


# Name pattern for logformatter output file, derived from environment
function output_name() {
    # .cirrus.yml defines this as a short readable string for web UI
    std_name_fmt=$(sed -ne 's/^.*std_name_fmt \"\(.*\)\"/\1/p' <.cirrus.yml)
    test -n "$std_name_fmt" || die "Could not grep 'std_name_fmt' from .cirrus.yml"

    # Interpolate envariables. 'set -u' throws fatal if any are undefined
    (
        set -u
        eval echo "$std_name_fmt" | tr ' ' '-'
    )
}

function logformatter() {
    # Mac awk barfs on this, syntax error
#    awk --file "${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/timestamp.awk" \
    # shellcheck disable=SC2154
    "${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/logformatter" "$(output_name)"
}

# Defined by .cirrus.yml
# shellcheck disable=SC2154
case "$TEST_FLAVOR" in
    machine-applehv)
        export CONTAINERS_MACHINE_PROVIDER="applehv"
        ;;
    machine-libkrun)
        export CONTAINERS_MACHINE_PROVIDER="libkrun"
        ;;
    *)
        echo "Unknown/unsupported \$TEST_FLAVOR value '$TEST_FLAVOR'."
        exit 1
esac

make localmachine 2>&1 | logformatter
