#!/usr/bin/env bash

# `mise bootstrap packages use` config-writing works on any platform — managers that
# aren't available on this machine are added to the config without installing
# (brew specs are avoided here: even a dry-run resolves the formula closure
# over the network)

# dry-run prints what would be written without creating the file
assert_contains "mise bootstrap packages use --dry-run apt:zlib1g-dev" '"apt:zlib1g-dev" = "latest"'
assert_contains "mise bootstrap packages use --dry-run apk:zlib-dev" '"apk:zlib-dev" = "latest"'
assert_fail "cat mise.toml"

# version pins use @, like mise use
assert_contains "mise bootstrap packages use --dry-run apt:curl@8.5.0-2" '"apt:curl" = "8.5.0-2"'
assert_contains "mise bootstrap packages use --dry-run apk:zlib-dev@1.3.1-r2" '"apk:zlib-dev" = "1.3.1-r2"'

# mas uses numeric ADAM IDs
assert_contains "mise bootstrap packages use --dry-run mas:497799835" '"mas:497799835" = "latest"'
assert_contains "mise bootstrap packages use --dry-run mas:497799835@latest" '"mas:497799835" = "latest"'
assert_fail "mise bootstrap packages use --dry-run mas:com.apple.dt.Xcode"
assert_fail "mise bootstrap packages use --dry-run mas:497799835@1"

# bad specs and unknown managers fail before anything is written
assert_fail "mise bootstrap packages use noprefix"
assert_fail "mise bootstrap packages use not-a-real-manager:pkg"
assert_fail "cat mise.toml"

# writes the entry even when the manager isn't available on this machine
# (guarded so a real Arch box doesn't actually install ripgrep)
if ! command -v pacman >/dev/null; then
  assert_succeed "mise bootstrap packages use --yes pacman:ripgrep"
  assert_contains "cat mise.toml" '"pacman:ripgrep" = "latest"'
fi
