#!/usr/bin/env bash

# skills.dir expands a leading ~ to the home directory, in a project and with
# --global, instead of linking into a directory literally named ~.
mkdir -p plugin/bin
cat >plugin/bin/list-all <<'SH'
#!/usr/bin/env bash
echo "1.0.0 2.0.0"
SH
cat >plugin/bin/install <<'SH'
#!/usr/bin/env bash
set -e
mkdir -p "$ASDF_INSTALL_PATH/bin" "$ASDF_INSTALL_PATH/skill"
echo "# skilled $ASDF_INSTALL_VERSION" >"$ASDF_INSTALL_PATH/skill/SKILL.md"
printf '#!/bin/sh\n' >"$ASDF_INSTALL_PATH/bin/skilled"
chmod +x "$ASDF_INSTALL_PATH/bin/skilled"
digest="$(printf 'a%.0s' $(seq 64))"
cat >"$ASDF_INSTALL_PATH/.mise-packslip.json" <<JSON
{"_type":"https://in-toto.io/Statement/v1","subject":[{"name":"skilled.tar.gz","digest":{"sha256":"$digest"}}],"predicateType":"https://packslip.dev/release/v1","predicate":{"project":"github.com/test/skilled","version":"$ASDF_INSTALL_VERSION","published_at":"2026-09-01T00:00:00Z","artifacts":[{"name":"skilled.tar.gz","size":1,"format":"tar.gz","bin":["bin/skilled"]}],"resources":[{"kind":"skill","name":"skilled","archive":"skill"}],"identity":{"scheme":"sigstore-oidc","key_id":"https://github.com/test/skilled/.github/workflows/release.yml@refs/tags/v$ASDF_INSTALL_VERSION","issuer":"https://token.actions.githubusercontent.com"}}}
JSON
SH
chmod +x plugin/bin/list-all plugin/bin/install
mise plugins link skilled "$PWD/plugin"

mkdir proj
cd proj || exit 1
git init -q
echo '[tools]
skilled = "1.0.0"' >mise.toml
mise install
export MISE_SKILLS_DIR='~/agent-skills'
mise skills sync
assert_contains "cat $HOME/agent-skills/skilled/SKILL.md" "# skilled 1.0.0"
assert 'test -e "~"; echo $?' "1"
assert "test -e $HOME/~; echo \$?" "1"

# A global tool at another version, synced into a fresh directory, so the
# --global write is the only thing that can create the link.
mise use -g skilled@2.0.0
rm -rf "$HOME/agent-skills"
mise skills sync -g
assert_contains "cat $HOME/agent-skills/skilled/SKILL.md" "# skilled 2.0.0"
assert 'test -e "~"; echo $?' "1"
assert "test -e $HOME/~; echo \$?" "1"
