#!/usr/bin/env bash

# version_order changes both candidate selection and the order displayed by
# ls-remote.

VERSION_LIST_DIR="$TMPDIR/version-order-list"
mkdir -p "$VERSION_LIST_DIR"
cat <<'EOF' >"$VERSION_LIST_DIR/versions.txt"
v11.11.0
nightly
v10.99.0
v10.34.5
EOF

start_http_server --dir "$VERSION_LIST_DIR"

cat <<EOF >mise.toml
[tools."http:version-order"]
version = "latest"
url = "https://example.com/version-order-{{version}}.tar.gz"
version_list_url = "http://localhost:$HTTP_PORT/versions.txt"
version_regex = '(v[0-9.]+|nightly)'
EOF

assert "mise latest http:version-order" "v10.34.5"
assert "mise ls-remote http:version-order" "v11.11.0
nightly
v10.99.0
v10.34.5"

cat <<EOF >mise.toml
[tools."http:version-order"]
version = "latest"
url = "https://example.com/version-order-{{version}}.tar.gz"
version_list_url = "http://localhost:$HTTP_PORT/versions.txt"
version_regex = '(v[0-9.]+|nightly)'
version_order = "semver"
EOF

assert "mise latest http:version-order" "v11.11.0"
assert "mise latest http:version-order@10" "v10.99.0"
assert "mise latest http:version-order nightly" "nightly"
assert "mise ls-remote http:version-order" "nightly
v10.34.5
v10.99.0
v11.11.0"

assert_fail 'mise install --dry-run "cargo:ripgrep[version_order=semver]@14.1.1"' \
  "cargo backend does not support version_order"

cat <<'EOF' >mise.toml
[tools."cargo:ripgrep"]
version = "14.1.1"
version_order = "semver"
EOF

assert_fail "MISE_OFFLINE=1 mise install --dry-run" \
  "cargo backend does not support version_order"
assert_fail "MISE_PREFER_OFFLINE=1 mise install --dry-run" \
  "cargo backend does not support version_order"
