Add Panama commands to the launcher
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
installer="$repo_dir/setup/scripts/link-vicinae-scripts"
|
||||
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'
|
||||
|
||||
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/scripts/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'
|
||||
|
||||
expected_calls=$'vicinae <ping>\nvicinae <cmd> <launch> <core:reload-scripts>'
|
||||
[[ "$(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/scripts/panama.pre-panama.pre-panama" ]] \
|
||||
|| fail 'second install created a duplicate backup'
|
||||
|
||||
printf 'Panama command install contract: PASS\n'
|
||||
Reference in New Issue
Block a user