versioned installs and a real uninstall — rig's turn (box#79's layout, ported) #35
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#35
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
box just landed versioned installs and a real uninstall (heavy-duty/box#79, merged); rig has the same disease in a worse form and should get the same cure.
Where rig is today
install.shis the pre-versioning box shape, minus even the #66 guard:VERSIONfile, so an install can't even say what it is (rig#32's first item).rm -rfprose.rig bootstrapis the machine's identity source, a broken main at the wrong moment bricks the tool with nouse <previous>escape.What box#79 proved out (adopt, not re-derive)
rig versions/rig use <v>/rig uninstall [<v>|--all]as table verbs.RIG_REINSTALL=1replaces via two renames, delete last); new version → side-by-side.valid_versiongate everywhere a version becomes a path (box#79's review found the traversal hole; don't re-ship it).currentflips (link beside +mv -Tf), symlink healing judged fromversions/<v>itself, never from a wedged link.uninstall INCOMPLETEby name.RIG_INSTALL_SOURCE=<dir-or-tarball>so the test suite drives real installer runs (box's tests went from greps to driven installs this way).rig-specific deltas
/etc/rig/roleexists, since switching versions under a bootstrapped host changes what a re-converge would do. Worth deciding deliberately rather than inheriting box's rule blind.$HOME/.localfallback; no multi-user grant surface to protect.current-chain resolution viareadlink -fshould port unchanged (bin/rigderives its root the same way).VERSIONfile first (the version key IS the tree's own VERSION); the tag-resolving installer and this layout are natural one-PR-each companions, same as box#79 → box#83.Prior art to crib wholesale: box#79's
install.sh,cmd_versions/cmd_use/cmd_uninstall,valid_version,flip_current, and itstest/cli.shinstall-drive machinery.