Resolve the passwordless sudo helper by name in its migration

Pinning /usr/bin ran the packaged helper even where the migration came from somewhere else. Under a dev link the migration is read from the checkout while /usr/bin still holds the last installed package, and a package predating __migrate prints its usage and fails the update. By name, the unprivileged call goes through PATH and the sudo call through secure_path, which is how other migrations reach their helpers and which lands on /usr/bin on an install.

Co-Authored-By: Codex XHigh <noreply@openai.com>
This commit is contained in:
Spencer Bull
2026-09-26 14:43:00 -05:00
co-authored by Codex XHigh
parent e1614f2bdb
commit 2ffae36a18
2 changed files with 8 additions and 4 deletions
+4 -2
View File
@@ -1,6 +1,8 @@
echo "Remove legacy temporary passwordless sudo grants"
# Migration queues are per-user; the privileged repair is once per machine.
if ! /usr/bin/omarchy-sudo-passwordless __migration-complete; then
sudo /usr/bin/omarchy-sudo-passwordless __migrate
# By name: secure_path resolves /usr/bin on an install and the checkout under a
# dev link, where the installed package may predate __migrate.
if ! omarchy-sudo-passwordless __migration-complete; then
sudo omarchy-sudo-passwordless __migrate
fi
@@ -44,9 +44,11 @@ pass "legacy cleanup removes generated rules for any account and quarantines eve
# Run the actual migration queue for separate temporary homes. Sudo only calls
# the mapped helper and can be refused without requesting host authorization.
# The migration names the helper rather than a path, so both of its calls reach
# the mapped copy through PATH, as they reach a dev checkout's through the link.
mkdir -p "$test_tmp/source/migrations"
sed "s|/usr/bin/omarchy-sudo-passwordless|$test_tmp/omarchy-sudo-passwordless|g" \
"$ROOT/migrations/1788163635.sh" >"$test_tmp/source/migrations/1788163635.sh"
cp "$ROOT/migrations/1788163635.sh" "$test_tmp/source/migrations/"
ln -s ../omarchy-sudo-passwordless "$test_tmp/bin/omarchy-sudo-passwordless"
printf 'echo "later migration ran"\n' >"$test_tmp/source/migrations/1788163636.sh"
run_migrations() {
TEST_MIGRATION=1 OMARCHY_PATH="$test_tmp/source" OMARCHY_MIGRATION_STATE="$test_tmp/$1" \