Skip to content

Let snapshot commands take Plugin rows - #218

Merged
russwyte merged 1 commit into
mainfrom
snapshot/plugin-rows
Oct 5, 2026
Merged

russwyte merged 1 commit into
mainfrom
snapshot/plugin-rows

Conversation

@russwyte

@russwyte russwyte commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

zipxSnapshotAdvance, zipxSnapshotStatus, and zipxPinRelease refused Plugin rows ("'sbt-specular' is not a row zipxSnapshotAdvance can take"). A plugin pinned to another repo's commit, such as sbt-specular or sbt-splice, had to be edited by hand. Found while moving heddle onto specular's commit.

  • A row is any catalog row. A plugin row is a family of one.
  • A plugin's published name is crossed for the sbt running the build (sbt-specular_sbt2_3), through the same PublishedNames the catalog update uses.
  • PinRewrite.replace takes the row and rewrites the constructor it is written with, Lib(...) or Plugin(...).
  • The snapshot-plan scripted test moves a plugin row onto its line's commit, reads its status, and pins it back to its release. SnapshotPlanSpec covers the rewrite for both constructors.

Proof: sbt "scalafmtAll; cleanFull; testFull" passes, plus plugin/scripted for snapshot-plan, mutual-snapshots, and release-workflow.

zipxSnapshotAdvance, zipxSnapshotStatus, and zipxPinRelease only took
Lib rows, so a plugin pinned to another repo's commit (sbt-specular,
sbt-splice) had to be edited by hand. A row is now any catalog row. A
plugin row is a family of one, its published name is crossed for the sbt
running the build, and PinRewrite rewrites the constructor the row is
written with.
@russwyte
russwyte merged commit 36c6044 into main Oct 5, 2026
13 checks passed
@russwyte
russwyte deleted the snapshot/plugin-rows branch October 5, 2026 17:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant