#!/usr/bin/env bash
set -euo pipefail

export MISE_DEFAULT_TOOL_VERSIONS_FILENAME=.alternate-tool-versions
export MISE_DEFAULT_CONFIG_FILENAME=.MISSING

cat <<EOF >.alternate-tool-versions
shfmt 3.5.0
EOF

mise i shfmt
mise exec -- shfmt --version >&2
if [[ "$(mise exec -- shfmt --version)" != "v3.5.0" ]]; then
	exit 1
fi

assert() {
	actual="$($1)"
	actual="${actual%$'\n'}"
	expected="${2%$'\n'}"
	if [[ "$actual" != "$expected" ]]; then
		echo "assertion failed, expected '$expected', got '$actual'"
		exit 1
	fi
}

assert "mise local" "shfmt 3.5.0"

mise local -p shfmt@3.6.0
assert "mise local -p" "shfmt 3.6.0"

mise exec -- shfmt --version >&2
if [[ "$(mise exec -- shfmt --version)" != "v3.6.0" ]]; then
	exit 1
fi

mise local -p shfmt@3.5.0
assert "mise local shfmt" "3.5.0"
