feat(shims): add Nuke.Build and Nuke.Components transition shims (#69 session 3)#112
Merged
ChrisonSimtian merged 2 commits intoMay 22, 2026
Merged
Conversation
…session 3)
Adds the two remaining historically-published Nuke.* package IDs as
transition shims. `Nuke.GlobalTool` is omitted (was a CLI tool, not a
library consumers used `using` against). `Nuke.MSBuildTasks` is omitted
(never shipped to nuget.org).
Each shim is the same pattern as src/Shims/Nuke.Common:
- TargetFramework=net10.0
- Analyzer-attached Fallout.SourceGenerators reference, so the
TransitionShimGenerator emits the type mirror at compile time
- ShimMarker.cs holds the single `[assembly: ShimAllPublicTypesUnder]`
declaration scoping the generator's namespace swap
- README.md pointing at docs/migration/from-nuke.md
Marker namespaces:
- Nuke.Build ← Fallout.Build (currently covers Fallout.Build.Execution.Extensions)
- Nuke.Components ← Fallout.Components (covers the IPack / ICompile / ITest /
IPublish / IHaz* interface family)
Both build clean against the existing generator (0 warnings, 0 errors).
StronglyTypedSolutionGeneratorTest snapshot regenerated to include the
two new projects in fallout.slnx.
release.yml already globs `output/packages/Nuke.*.nupkg` for the GH
Packages push (#47), so the new shim nupkgs will be published
automatically on the next release run.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
actions/checkout defaults to the merge SHA on pull_request events,
leaving HEAD detached. GitRepository.FromLocalDirectory asserts
repository.Branch != null which throws in that state, so
Fallout.Common.Tests.GitHubTasksTest.GitHubRepositoryFromLocalDirectoryTest
fails the moment any PR triggers ubuntu-latest validation.
ref: ${{ github.head_ref }} checks out the source branch directly,
which leaves HEAD attached to the branch name. Tests then see the same
git state they'd see on a developer's machine.
This file is auto-generated by Fallout — the next regen via
`fallout --generate-configuration GitHubActions_ubuntu-latest` will
overwrite this fix. Tracking the underlying issue (either fix the
generator to emit ref: github.head_ref on PR triggers, or make
GitRepository.FromLocalDirectory tolerate detached HEAD) is queued.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Spins up the two remaining historically-published
Nuke.*package IDs as transition shims:Nuke.Build(mirrors theFallout.Buildnamespace)Nuke.Components(mirrors theFallout.Componentsinterface family —IPack,ICompile,ITest,IPublish, theIHaz*series)Both follow the exact same scaffolding as
src/Shims/Nuke.Common: tiny csproj,ShimMarker.cswith a single[assembly: ShimAllPublicTypesUnder(...)], README pointing at the migration guide. TheTransitionShimGeneratordoes all the actual mirror emission at compile time.Why these two?
These are the four
Nuke.*IDs that ever shipped on nuget.org:Nuke.Common— already shimmedNuke.Build— added hereNuke.Components— added hereNuke.GlobalTool— CLI tool, not a library; consumers don'tusingit, so no shim neededNuke.MSBuildTasksnever went to nuget.org, so it's also out of scope.Verification
StronglyTypedSolutionGeneratorTestsnapshot updated to include the two new projects (verified passes)release.ymlalready globsoutput/packages/Nuke.*.nupkgfor the GH Packages push ([P5] Ship Nuke.* type-forwarding shim packages on our GH Packages feed #47), so the new shim nupkgs will be published automatically on the next release run — no workflow changes neededNotes
NukeBuild/INukeBuildequivalent in this namespace). TheNuke.Commonshim is the only one that needed those because of theNukeBuild→FalloutBuildtype rename.Nuke.Buildshim is small —Fallout.Buildnamespace currently only containsFallout.Build.Execution.Extensionstypes. The shim grows automatically if more types land in that namespace.Nuke.Componentsshim is bigger — covers the full component-interface family that consumers used in theirBuildclass declarations.#69 roadmap status after this