#!/usr/bin/env bash set -euo pipefail repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" installer="$repo_dir/setup/scripts/link-vicinae-scripts" dotfile_installer="$repo_dir/setup/scripts/link-dotfiles" top_level_installer="$repo_dir/install" work="$(mktemp -d /tmp/panama-command-install.XXXXXX)" data_dir="$work/share/vicinae" fake_bin="$work/bin" vicinae_log="$work/vicinae.log" fail() { printf 'Panama command install contract: %s\n' "$1" >&2 exit 1 } cleanup() { rm -rf "$work" } trap cleanup EXIT [[ -x "$installer" ]] || fail 'Vicinae script installer is missing or not executable' if rg -q 'setup/scripts/link-vicinae-scripts' "$dotfile_installer"; then fail 'link-dotfiles also invokes the command installer' fi rg -Fq 'do "$script"; done' "$top_level_installer" \ || fail 'top-level installer sources setup scripts into one shared shell' mkdir -p "$data_dir/scripts/panama" "$fake_bin" printf 'user-owned\n' >"$data_dir/scripts/panama/keep.sh" cat >"$fake_bin/vicinae" <<'EOF' #!/usr/bin/env bash printf 'vicinae' >>"$PANAMA_VICINAE_TEST_LOG" printf ' <%s>' "$@" >>"$PANAMA_VICINAE_TEST_LOG" printf '\n' >>"$PANAMA_VICINAE_TEST_LOG" [[ ${1:-} == ping || ${1:-} == cmd ]] EOF chmod +x "$fake_bin/vicinae" PATH="$fake_bin:$PATH" PANAMA_PATH="$repo_dir" VICINAE_DATA_DIR="$data_dir" \ PANAMA_VICINAE_TEST_LOG="$vicinae_log" "$installer" >/dev/null target="$data_dir/scripts/panama" backup="$data_dir/backups/panama.pre-panama" [[ -L "$target" ]] || fail 'Panama command directory was not linked' [[ "$(readlink -f "$target")" == "$(readlink -f "$repo_dir/config/local/share/vicinae/scripts")" ]] \ || fail 'runtime command link points outside the tracked source' [[ -f "$backup/keep.sh" ]] || fail 'pre-existing user command directory was not preserved' [[ "$(cat "$backup/keep.sh")" == user-owned ]] || fail 'preserved user command changed' [[ ! -e "$data_dir/scripts/panama.pre-panama" ]] \ || fail 'preserved commands remained inside Vicinae search paths' expected_calls=$'vicinae \nvicinae ' [[ "$(cat "$vicinae_log")" == "$expected_calls" ]] \ || fail "Vicinae reload sequence was wrong: $(cat "$vicinae_log")" # A second setup pass must update the same narrow link without creating more # backups or disturbing the preserved directory. : >"$vicinae_log" PATH="$fake_bin:$PATH" PANAMA_PATH="$repo_dir" VICINAE_DATA_DIR="$data_dir" \ PANAMA_VICINAE_TEST_LOG="$vicinae_log" "$installer" >/dev/null [[ -L "$target" ]] || fail 'second install did not leave the command link intact' [[ -f "$backup/keep.sh" ]] || fail 'second install disturbed the original backup' [[ ! -e "$data_dir/backups/panama.pre-panama.pre-panama" ]] \ || fail 'second install created a duplicate backup' printf 'Panama command install contract: PASS\n'