@@ -19,19 +19,18 @@ public static void EnsureToolRequirements(INukeBuild build, IReadOnlyCollection<
1919 {
2020 var requirements = build . GetType ( ) . GetCustomAttributes < RequiresAttribute > ( ) . Select ( x => x . GetRequirement ( ) )
2121 . Concat ( executionPlan . SelectMany ( x => x . ToolRequirements ) ) . ToList ( ) ;
22- var directory = build . TemporaryDirectory ;
2322
24- InstallNuGetPackages ( requirements . OfType < NuGetPackageRequirement > ( ) . ToList ( ) , directory ) ;
25- InstallNpmPackages ( requirements . OfType < NpmPackageRequirement > ( ) . ToList ( ) , directory ) ;
26- InstallAptGetPackages ( requirements . OfType < AptGetPackageRequirement > ( ) . ToList ( ) , directory ) ;
23+ InstallNuGetPackages ( requirements . OfType < NuGetPackageRequirement > ( ) . ToList ( ) , build ) ;
24+ InstallNpmPackages ( requirements . OfType < NpmPackageRequirement > ( ) . ToList ( ) , build ) ;
25+ InstallAptGetPackages ( requirements . OfType < AptGetPackageRequirement > ( ) . ToList ( ) , build ) ;
2726 }
2827
29- private static void InstallNuGetPackages ( IReadOnlyCollection < NuGetPackageRequirement > requirements , AbsolutePath directory )
28+ private static void InstallNuGetPackages ( IReadOnlyCollection < NuGetPackageRequirement > requirements , INukeBuild build )
3029 {
3130 if ( requirements . Count == 0 )
3231 return ;
3332
34- var projectFile = directory / "nuget.csproj" ;
33+ var projectFile = build . TemporaryDirectory / "nuget.csproj" ;
3534 NuGetToolPathResolver . NuGetPackagesConfigFile = projectFile ;
3635 NuGetToolPathResolver . NuGetAssetsConfigFile = projectFile . Parent / "obj" / "project.assets.json" ;
3736
@@ -45,8 +44,10 @@ private static void InstallNuGetPackages(IReadOnlyCollection<NuGetPackageRequire
4544 <TargetFramework>net8.0</TargetFramework>
4645 </PropertyGroup>
4746
47+ <Import Project="{ build . BuildProjectFile } " />
48+
4849 <ItemGroup>
49- { groupedPackages . Select ( x => $ """ <PackageDownload Include="{ x . Key } " Version="{ x . JoinSemicolon ( ) } " />""" ) . JoinNewLine ( ) }
50+ { groupedPackages . Select ( x => $ """ <PackageDownload Include="{ x . Key } " Version="{ x . JoinSemicolon ( ) } " Exclude="@(PackageDownload)" />""" ) . JoinNewLine ( ) }
5051 </ItemGroup>
5152
5253 </Project>
@@ -63,12 +64,12 @@ private static void InstallNuGetPackages(IReadOnlyCollection<NuGetPackageRequire
6364 dotnet . Invoke ( $ "restore", workingDirectory : projectFile . Parent , logInvocation : false , logOutput : false ) ;
6465 }
6566
66- private static void InstallNpmPackages ( IReadOnlyCollection < NpmPackageRequirement > requirements , AbsolutePath directory )
67+ private static void InstallNpmPackages ( IReadOnlyCollection < NpmPackageRequirement > requirements , INukeBuild build )
6768 {
6869 if ( requirements . Count == 0 )
6970 return ;
7071
71- var packageJsonFile = directory / "package.json" ;
72+ var packageJsonFile = build . TemporaryDirectory / "package.json" ;
7273 NpmToolPathResolver . NpmPackageJsonFile = packageJsonFile ;
7374
7475 var packages = requirements . OrderBy ( x => x . PackageId ) . ToList ( ) ;
@@ -92,15 +93,15 @@ private static void InstallNpmPackages(IReadOnlyCollection<NpmPackageRequirement
9293 npm . Invoke ( "install" , workingDirectory : packageJsonFile . Parent , logInvocation : false , logOutput : false ) ;
9394 }
9495
95- private static void InstallAptGetPackages ( IReadOnlyCollection < AptGetPackageRequirement > requirements , AbsolutePath directory )
96+ private static void InstallAptGetPackages ( IReadOnlyCollection < AptGetPackageRequirement > requirements , INukeBuild build )
9697 {
9798 if ( requirements . Count == 0 )
9899 return ;
99100
100101 var packages = requirements . OrderBy ( x => x . PackageId ) . ToList ( ) ;
101102 Assert . True ( EnvironmentInfo . IsLinux , "AptGet is only available on Linux" ) ;
102103
103- var installScript = directory / "apt-get.sh" ;
104+ var installScript = build . TemporaryDirectory / "apt-get.sh" ;
104105
105106 var content = $ """
106107 apt-get update
0 commit comments