#!/usr/bin/env bash

export MISE_LOCKFILE=1

# Use local fixture plugin for tiny to avoid network access.
ln -sf "$ROOT/test/data/plugins/tiny" "$MISE_DATA_DIR/plugins/tiny"
rm -f mise.toml mise.lock

echo "=== Lockfile with initial tool ==="
cat <<EOF >mise.toml
[tools]
dummy = "1.0.0"
EOF

mise install dummy@1.0.0
mise lock --platform linux-x64
assert_contains "cat mise.lock" "[[tools.dummy]]"
assert_not_contains "cat mise.lock" "[[tools.tiny]]"

echo "=== Replace configured tool and relock ==="
cat <<EOF >mise.toml
[tools]
tiny = "2.1.0"
EOF

mise install tiny@2.1.0
mise lock --platform linux-x64
assert_contains "cat mise.lock" "[[tools.tiny]]"
assert_not_contains "cat mise.lock" "[[tools.dummy]]"

echo "=== Remove all tools and relock ==="
cat <<EOF >mise.toml
[tools]
EOF

assert_contains \
	"mise lock --dry-run --platform linux-x64" \
	"Dry run - would prune 1 stale tool entry"
assert_contains "cat mise.lock" "[[tools.tiny]]"

OUTPUT=$(mise lock --platform linux-x64 2>&1)
assert_contains "echo \"$OUTPUT\"" "Pruned 1 stale tool entry"
assert_not_contains "echo \"$OUTPUT\"" "No tools configured to lock"
assert "test ! -f mise.lock"

echo "=== Cleanup ==="
rm -f mise.toml mise.lock
