Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/ubuntu-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ jobs:
with:
submodules: recursive
fetch-depth: 0
# Check out the source branch (not the merge SHA) so HEAD stays
# attached. GitHubTasksTest.GitHubRepositoryFromLocalDirectoryTest
# requires repository.Branch to be non-null. NOTE: this file is
# auto-generated by Fallout; next regen will overwrite. Track in #110.
ref: ${{ github.head_ref }}
- name: 'Cache: .fallout/temp, ~/.nuget/packages'
uses: actions/cache@v4
with:
Expand Down
2 changes: 2 additions & 0 deletions fallout.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
<Project Path="src\Fallout.GlobalTool\Fallout.GlobalTool.csproj" />
<Project Path="src\Fallout.Migrate\Fallout.Migrate.csproj" />
<Project Path="src\Fallout.Migrate.Analyzers\Fallout.Migrate.Analyzers.csproj" />
<Project Path="src\Shims\Nuke.Build\Nuke.Build.csproj" />
<Project Path="src\Shims\Nuke.Common\Nuke.Common.csproj" />
<Project Path="src\Shims\Nuke.Components\Nuke.Components.csproj" />
<Project Path="src\Fallout.MSBuildTasks\Fallout.MSBuildTasks.csproj" />
<Project Path="src\Fallout.ProjectModel\Fallout.ProjectModel.csproj" />
<Project Path="src\Fallout.SolutionModel\Fallout.SolutionModel.csproj" />
Expand Down
30 changes: 30 additions & 0 deletions src/Shims/Nuke.Build/Nuke.Build.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<AssemblyName>Nuke.Build</AssemblyName>
<RootNamespace>Nuke.Build</RootNamespace>
<PackageId>Nuke.Build</PackageId>
<Title>Nuke.Build (Fallout transition shim)</Title>
<!--
Packs as a normal build artifact. The release pipeline's Publish target filters
`Nuke.*` packages out of the nuget.org push (see Build.cs PushPackageFiles
override) since that package ID belongs to the original NUKE maintainer. The
produced nupkg is pushed to GitHub Packages by release.yml (#47).
-->
<IsPackable>true</IsPackable>
<Description>Transition shim that re-exports the most common Nuke.Build types as subclasses/wrappers of the canonical Fallout.* types. For projects mid-migration from NUKE to Fallout. Published only to GitHub Packages (nuget.org's Nuke.Build is owned by the original NUKE maintainer).</Description>
<PackageTags>build automation continuous-integration tools orchestration nuke shim transition</PackageTags>
<!-- Disable XML doc generation here; Directory.Build.props turns it on for packable projects,
but the shim types' XML docs are intentionally minimal (point at the canonical type). -->
<GenerateDocumentationFile>false</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\Fallout.Build\Fallout.Build.csproj" />
<ProjectReference Include="..\..\Fallout.SourceGenerators\Fallout.SourceGenerators.csproj"
ReferenceOutputAssembly="false"
OutputItemType="Analyzer" />
</ItemGroup>

</Project>
19 changes: 19 additions & 0 deletions src/Shims/Nuke.Build/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Nuke.Build transition shim

Transition shim for projects mid-migration from NUKE to Fallout. Published to **GitHub Packages** only — `Nuke.Build` on nuget.org is owned by the original NUKE maintainer.

Generated by Fallout's `TransitionShimGenerator` from the canonical `Fallout.Build` namespace surface. Types are emitted as subclass/sub-interface wrappers inheriting from their `Fallout.*` counterparts; consumer code that says `using Nuke.Build;` keeps compiling against the new types.

Coverage and limitations are the same as the `Nuke.Common` shim — see [`../Nuke.Common/README.md`](../Nuke.Common/README.md) for the full surface description.

## Consumer setup

Add this fork's GitHub Packages feed to your `nuget.config`:

```xml
<add key="fallout-shims" value="https://nuget.pkg.github.com/ChrisonSimtian/index.json" />
```

Then bump your `Nuke.Build` package reference to the latest 10.3.x or later.

Full migration walkthrough: [`docs/migration/from-nuke.md`](../../../docs/migration/from-nuke.md).
12 changes: 12 additions & 0 deletions src/Shims/Nuke.Build/ShimMarker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright 2026 Maintainers of Fallout.
// Originally based on NUKE by Matthias Koch and contributors.
// Distributed under the MIT License.
// https://github.com/ChrisonSimtian/Fallout/blob/main/LICENSE

// Tells the TransitionShimGenerator to emit shims for every public type whose
// namespace begins with "Fallout.Build." into the corresponding "Nuke.Build."
// namespace.

[assembly: Fallout.Migrate.Shims.ShimAllPublicTypesUnder(
fromNamespacePrefix: "Fallout.Build",
toNamespacePrefix: "Nuke.Build")]
28 changes: 28 additions & 0 deletions src/Shims/Nuke.Components/Nuke.Components.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<AssemblyName>Nuke.Components</AssemblyName>
<RootNamespace>Nuke.Components</RootNamespace>
<PackageId>Nuke.Components</PackageId>
<Title>Nuke.Components (Fallout transition shim)</Title>
<!--
Packs as a normal build artifact. The release pipeline's Publish target filters
`Nuke.*` packages out of the nuget.org push (see Build.cs PushPackageFiles
override) since that package ID belongs to the original NUKE maintainer. The
produced nupkg is pushed to GitHub Packages by release.yml (#47).
-->
<IsPackable>true</IsPackable>
<Description>Transition shim that re-exports the Nuke.Components composition interfaces (ICompile, IRestore, IPack, etc.) as sub-interfaces of the canonical Fallout.Components types. For projects mid-migration from NUKE to Fallout. Published only to GitHub Packages.</Description>
<PackageTags>build automation continuous-integration tools orchestration nuke shim transition components</PackageTags>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\Fallout.Components\Fallout.Components.csproj" />
<ProjectReference Include="..\..\Fallout.SourceGenerators\Fallout.SourceGenerators.csproj"
ReferenceOutputAssembly="false"
OutputItemType="Analyzer" />
</ItemGroup>

</Project>
19 changes: 19 additions & 0 deletions src/Shims/Nuke.Components/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Nuke.Components transition shim

Transition shim for projects mid-migration from NUKE to Fallout. Published to **GitHub Packages** only — `Nuke.Components` on nuget.org is owned by the original NUKE maintainer.

Mirrors the canonical `Fallout.Components` interface family (`ICompile`, `IRestore`, `IPack`, `ITest`, `IPublish`, the `IHaz*` family, etc.) under the `Nuke.Components` namespace. Consumer code that says `class Build : NukeBuild, IPack, ITest` continues to compile.

Limitations are the same as the `Nuke.Common` shim — see [`../Nuke.Common/README.md`](../Nuke.Common/README.md).

## Consumer setup

Add this fork's GitHub Packages feed to your `nuget.config`:

```xml
<add key="fallout-shims" value="https://nuget.pkg.github.com/ChrisonSimtian/index.json" />
```

Then bump your `Nuke.Components` package reference to the latest 10.3.x or later.

Full migration walkthrough: [`docs/migration/from-nuke.md`](../../../docs/migration/from-nuke.md).
13 changes: 13 additions & 0 deletions src/Shims/Nuke.Components/ShimMarker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright 2026 Maintainers of Fallout.
// Originally based on NUKE by Matthias Koch and contributors.
// Distributed under the MIT License.
// https://github.com/ChrisonSimtian/Fallout/blob/main/LICENSE

// Tells the TransitionShimGenerator to emit shims for every public type whose
// namespace begins with "Fallout.Components" into the corresponding
// "Nuke.Components" namespace. The bulk of this assembly is the component
// interface family (ICompile, IRestore, IPack, ITest, IPublish, IHaz*).

[assembly: Fallout.Migrate.Shims.ShimAllPublicTypesUnder(
fromNamespacePrefix: "Fallout.Components",
toNamespacePrefix: "Nuke.Components")]
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ internal class Solution(SolutionModel model, AbsolutePath path) : Fallout.Common
public Fallout.Common.ProjectModel.Project Fallout_Utilities_Text_Json => this.GetProject("Fallout.Utilities.Text.Json");
public Fallout.Common.ProjectModel.Project Fallout_Utilities_Text_Yaml => this.GetProject("Fallout.Utilities.Text.Yaml");
public Fallout.Common.ProjectModel.Project Fallout_VisualStudio_SolutionPersistence => this.GetProject("Fallout.VisualStudio.SolutionPersistence");
public Fallout.Common.ProjectModel.Project Nuke_Build => this.GetProject("Nuke.Build");
public Fallout.Common.ProjectModel.Project Nuke_Common => this.GetProject("Nuke.Common");
public Fallout.Common.ProjectModel.Project Nuke_Common_Shim_Tests => this.GetProject("Nuke.Common.Shim.Tests");
public Fallout.Common.ProjectModel.Project Nuke_Components => this.GetProject("Nuke.Components");

public _misc misc => Unsafe.As<_misc>(this.GetSolutionFolder("misc"));

Expand Down
Loading