#!/usr/bin/env bash

_dir_=$(realpath "$(dirname "$0")")

script=casign
casign="$_dir_/$script"

main() {
    local casign_vars
    casign_vars=$(grep -Ev '(^#)|(^$)' "$casign" | head -20 | grep -E '^\s*\w+=')

    assert_output \
        "$(echo "$casign_vars" | grep '^VERSION=' | sed 's/^VERSION=//;s/\n$//')" \
        "Unexpected version value" \
        v

    echo ""
    echo "Done"
}

invoke() {
    echo >&2 "$script" "$@"
    if ! "$casign" "$@"; then
        echo >&2 "Unexpected exit code $?"
        exit 1
    fi
}

assert_output() {
    local expected="$1"
    local message="${2:-Unexpected output}"
    shift
    shift
    local output

    output=$(invoke "$@")

    if [[ "$expected" != "$output" ]]; then
        echo >&2 "$message: \"$output\" != \"$expected\""
        exit 2
    fi
}

main "$@"