Signed, Omacom's PDF signing app, takes Xournal++'s place in the base install and the preinstall set, so Remove and Install Preinstalls cover it too. A migration installs it on existing machines, unless their owner has removed the preinstalls; Xournal++ stays on machines that already have it. The Filling out PDFs chapter now walks through Signed, the GUIs chapter introduces it, the setup tip points to it, and the unused Xournal++ config is gone. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
94 lines
3.3 KiB
Bash
Executable File
94 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
|
|
|
test_tmp=$(mktemp -d)
|
|
trap 'rm -rf "$test_tmp"' EXIT
|
|
|
|
mock_bin="$test_tmp/bin"
|
|
test_home="$test_tmp/home"
|
|
marker="$test_home/.local/state/omarchy/preinstalls-removed"
|
|
pkg_log="$test_tmp/packages"
|
|
mkdir -p "$mock_bin" "$test_home/.local/state/omarchy"
|
|
|
|
for command in omarchy-webapp-remove-all omarchy-tui-remove-all omarchy-refresh-applications hyprctl; do
|
|
printf '#!/bin/bash\nexit 0\n' >"$mock_bin/$command"
|
|
done
|
|
|
|
cat >"$mock_bin/gum" <<'SH'
|
|
#!/bin/bash
|
|
[[ $1 == confirm ]] && exit "${OMARCHY_TEST_CONFIRM:-0}"
|
|
exit 0
|
|
SH
|
|
|
|
cat >"$mock_bin/omarchy-pkg-add" <<'SH'
|
|
#!/bin/bash
|
|
printf '%s\n' "$@" >"$OMARCHY_TEST_PKG_LOG"
|
|
exit "${OMARCHY_TEST_PKG_ADD_STATUS:-0}"
|
|
SH
|
|
|
|
cat >"$mock_bin/omarchy-pkg-drop" <<'SH'
|
|
#!/bin/bash
|
|
printf '%s\n' "$@" >"$OMARCHY_TEST_PKG_LOG"
|
|
SH
|
|
|
|
chmod +x "$mock_bin"/*
|
|
|
|
# $ROOT/bin after the mocks, so the real helpers answer wherever a mock does not
|
|
# shadow them.
|
|
export PATH="$mock_bin:$ROOT/bin:$PATH"
|
|
export HOME="$test_home"
|
|
export OMARCHY_TEST_PKG_LOG="$pkg_log"
|
|
|
|
# Both scripts restore and remove the same set, and every package in it has to be
|
|
# one Omarchy actually ships, or Remove Preinstalls takes out an app the user
|
|
# chose from the menu and Install Preinstalls puts back one we retired.
|
|
mapfile -t shipped < <(sed -e 's/[[:space:]]*#.*$//' -e '/^[[:space:]]*$/d' "$ROOT/install/omarchy-base.packages")
|
|
|
|
"$ROOT/bin/omarchy-install-preinstalls" >/dev/null
|
|
mapfile -t restored <"$pkg_log"
|
|
|
|
"$ROOT/bin/omarchy-remove-preinstalls" >/dev/null
|
|
mapfile -t dropped <"$pkg_log"
|
|
|
|
[[ ${restored[*]} == "${dropped[*]}" ]] ||
|
|
fail "Install and Remove Preinstalls cover the same packages" \
|
|
"restored: ${restored[*]}
|
|
dropped: ${dropped[*]}"
|
|
pass "Install and Remove Preinstalls cover the same packages"
|
|
|
|
for package in "${restored[@]}"; do
|
|
printf '%s\n' "${shipped[@]}" | grep -qxF "$package" ||
|
|
fail "every preinstall is shipped in omarchy-base.packages" "$package is not shipped"
|
|
done
|
|
pass "every preinstall is shipped in omarchy-base.packages"
|
|
|
|
for package in omacut monologue omacalc omawrite hype signed; do
|
|
printf '%s\n' "${restored[@]}" | grep -qxF "$package" ||
|
|
fail "preinstalls cover the Omacom apps" "$package is missing"
|
|
done
|
|
pass "preinstalls cover the Omacom apps"
|
|
|
|
# The bindings key off the marker, so clearing it before the packages land would
|
|
# point them at apps that never came back.
|
|
touch "$marker"
|
|
OMARCHY_TEST_PKG_ADD_STATUS=1 "$ROOT/bin/omarchy-install-preinstalls" >/dev/null && status=0 || status=$?
|
|
(( status == 1 )) || fail "restore reports a failed package transaction" "exit status was $status"
|
|
[[ -f $marker ]] || fail "restore keeps the opt-out marker when packages fail to install"
|
|
pass "restore keeps the opt-out marker when packages fail to install"
|
|
|
|
"$ROOT/bin/omarchy-install-preinstalls" >/dev/null
|
|
[[ ! -e $marker ]] || fail "restore clears the opt-out marker once the packages are back"
|
|
pass "restore clears the opt-out marker once the packages are back"
|
|
|
|
rm -f "$marker"
|
|
OMARCHY_TEST_CONFIRM=1 "$ROOT/bin/omarchy-remove-preinstalls" >/dev/null
|
|
[[ ! -e $marker ]] || fail "declining Remove Preinstalls changes nothing"
|
|
pass "declining Remove Preinstalls changes nothing"
|
|
|
|
"$ROOT/bin/omarchy-remove-preinstalls" >/dev/null
|
|
[[ -f $marker ]] || fail "Remove Preinstalls records the opt-out"
|
|
pass "Remove Preinstalls records the opt-out"
|