#!/usr/bin/env bash

mkdir foo
cat <<EOF >mise.toml
[tools]
dummy = 'latest'
[hooks]
enter = { run = 'echo HOOK-ENTER' }
leave = { run = 'echo HOOK-LEAVE' }
cd = { run = 'echo HOOK-CD' }
preinstall = { run = 'echo PREINSTALL' }
postinstall = { run = 'echo POSTINSTALL' }
EOF

# preinstall + postinstall hooks fire when installing
assert_contains "mise i 2>&1" "PREINSTALL"
assert_contains "mise i dummy@1 2>&1" "POSTINSTALL"
# `mise i` with nothing missing still runs postinstall (MISE_INSTALLED_TOOLS=[], #10574)
assert_contains "mise i 2>&1" "POSTINSTALL"
assert_contains "mise i dummy@1 2>&1" "POSTINSTALL"
eval "$(mise hook-env)"

cd ~/workdir || exit 1
assert_not_contains "mise hook-env 2>&1" "HOOK-CD"
assert_not_contains "mise hook-env 2>&1" "HOOK-ENTER"
assert_not_contains "mise hook-env 2>&1" "HOOK-LEAVE"

cd ~ || exit 1
assert_not_contains "mise hook-env 2>&1" "HOOK-CD"
assert_not_contains "mise hook-env 2>&1" "HOOK-ENTER"
assert_contains "mise hook-env 2>&1" "HOOK-LEAVE"
eval "$(mise hook-env)"

cd ~/workdir || exit 1
assert_contains "mise hook-env 2>&1" "HOOK-CD"
assert_contains "mise hook-env 2>&1" "HOOK-ENTER"
assert_not_contains "mise hook-env 2>&1" "HOOK-LEAVE"
eval "$(mise hook-env)"

cd ~/workdir/foo || exit 1
assert_contains "mise hook-env 2>&1" "HOOK-CD"
assert_not_contains "mise hook-env 2>&1" "HOOK-ENTER"
assert_not_contains "mise hook-env 2>&1" "HOOK-LEAVE"
eval "$(mise hook-env)"

cd ~ || exit 1
assert_not_contains "mise hook-env 2>&1" "HOOK-CD"
assert_not_contains "mise hook-env 2>&1" "HOOK-ENTER"
assert_contains "mise hook-env 2>&1" "HOOK-LEAVE"
eval "$(mise hook-env)"

cd ~/workdir/foo || exit 1
assert_contains "mise hook-env 2>&1" "HOOK-CD"
assert_contains "mise hook-env 2>&1" "HOOK-ENTER"
assert_not_contains "mise hook-env 2>&1" "HOOK-LEAVE"
eval "$(mise hook-env)"
