Don't ship global CLI tool packages to nuget.org or put into LZMA (#906)
This commit is contained in:
parent
fd38a67f80
commit
68b3df8fe9
|
|
@ -49,21 +49,6 @@
|
||||||
Targets="Restore"
|
Targets="Restore"
|
||||||
Properties="RestorePackagesPath=$(FallbackStagingDir);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp21PackageVersion);DotNetRestoreSourcePropsPath=$(GeneratedFallbackRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true" />
|
Properties="RestorePackagesPath=$(FallbackStagingDir);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp21PackageVersion);DotNetRestoreSourcePropsPath=$(GeneratedFallbackRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true" />
|
||||||
|
|
||||||
<!-- Add global CLI tools to the LZMA -->
|
|
||||||
|
|
||||||
<!-- Join categories (defined in artifacts.props) with package version info (defined in repos) -->
|
|
||||||
<RepoTasks.JoinItems
|
|
||||||
Left="@(ArtifactInfo)" LeftKey="PackageId" LeftMetadata="*" LeftItemSpec="PackageId"
|
|
||||||
Right="@(PackageArtifact->WithMetadataValue('LZMA', 'true')->WithMetadataValue('PackageType', 'DotnetTool'))">
|
|
||||||
<Output TaskParameter="JoinResult" ItemName="_DotnetToolPackageId" />
|
|
||||||
</RepoTasks.JoinItems>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<_DotnetToolPackages Include="$(MetapackageRestoreSource)%(_DotnetToolPackageId.Identity).%(_DotnetToolPackageId.Version).nupkg" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<RepoTasks.CreateNuGetV3FolderFeed Packages="@(_DotnetToolPackages)" DestinationFolder="$(FallbackStagingDir)" Overwrite="true" />
|
|
||||||
|
|
||||||
<!-- Create the archive -->
|
<!-- Create the archive -->
|
||||||
<Exec Command="$(ArchiverPath) -a $(FallbackOutputPath) $(FallbackStagingDir)" />
|
<Exec Command="$(ArchiverPath) -a $(FallbackOutputPath) $(FallbackStagingDir)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,16 @@
|
||||||
Other known package types:
|
Other known package types:
|
||||||
Dependency = for packages that are installed via PackageReference
|
Dependency = for packages that are installed via PackageReference
|
||||||
DotnetCliTool = for packages that are installed via DotNetCliToolReference
|
DotnetCliTool = for packages that are installed via DotNetCliToolReference
|
||||||
DotnetTOol = for packages that installed via dotnet-install-tool
|
|
||||||
-->
|
-->
|
||||||
<PackageType>Dependency</PackageType>
|
<PackageType>Dependency</PackageType>
|
||||||
</PackageArtifact>
|
</PackageArtifact>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageArtifact Include="dotnet-dev-certs" Category="ship" LZMA="true" PackageType="DotnetTool" />
|
<PackageArtifact Include="dotnet-dev-certs" Category="shipoob" />
|
||||||
<PackageArtifact Include="dotnet-sql-cache" Category="ship" LZMA="true" PackageType="DotnetTool" />
|
<PackageArtifact Include="dotnet-sql-cache" Category="shipoob" />
|
||||||
<PackageArtifact Include="dotnet-user-secrets" Category="ship" LZMA="true" PackageType="DotnetTool" />
|
<PackageArtifact Include="dotnet-user-secrets" Category="shipoob" />
|
||||||
<PackageArtifact Include="dotnet-watch" Category="ship" LZMA="true" PackageType="DotnetTool" />
|
<PackageArtifact Include="dotnet-watch" Category="shipoob" />
|
||||||
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="noship" />
|
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="noship" />
|
||||||
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||||
<PackageArtifact Include="Microsoft.AspNetCore.App" Category="ship" />
|
<PackageArtifact Include="Microsoft.AspNetCore.App" Category="ship" />
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Build.Framework;
|
|
||||||
using Microsoft.Build.Utilities;
|
|
||||||
using NuGet.Packaging;
|
|
||||||
using NuGet.Packaging.Core;
|
|
||||||
using NuGet.Versioning;
|
|
||||||
|
|
||||||
namespace RepoTasks
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Layouts nuget packages as a V3 feed
|
|
||||||
/// </summary>
|
|
||||||
public class CreateNuGetV3FolderFeed : Task
|
|
||||||
{
|
|
||||||
[Required]
|
|
||||||
public ITaskItem[] Packages { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
public string DestinationFolder { get; set; }
|
|
||||||
|
|
||||||
public bool Overwrite { get; set; }
|
|
||||||
|
|
||||||
public override bool Execute()
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(DestinationFolder);
|
|
||||||
|
|
||||||
foreach (var file in Packages)
|
|
||||||
{
|
|
||||||
PackageIdentity identity;
|
|
||||||
using (var reader = new PackageArchiveReader(file.ItemSpec))
|
|
||||||
{
|
|
||||||
identity = reader.GetIdentity();
|
|
||||||
}
|
|
||||||
|
|
||||||
Log.LogMessage(MessageImportance.High, "Adding {0} to feed '{1}'", identity, DestinationFolder);
|
|
||||||
|
|
||||||
var packageFolder = Path.Combine(DestinationFolder, identity.Id.ToLowerInvariant(), identity.Version.ToNormalizedString());
|
|
||||||
var nuspecFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nuspec");
|
|
||||||
var nupkgFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg");
|
|
||||||
var sha512File = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg.sha512");
|
|
||||||
|
|
||||||
if (!Overwrite && File.Exists(nuspecFile))
|
|
||||||
{
|
|
||||||
Log.LogError("File already exists: {0}", nuspecFile);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!Overwrite && File.Exists(nupkgFile))
|
|
||||||
{
|
|
||||||
Log.LogError("File already exists: {0}", nupkgFile);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!Overwrite && File.Exists(sha512File))
|
|
||||||
{
|
|
||||||
Log.LogError("File already exists: {0}", sha512File);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Directory.CreateDirectory(packageFolder);
|
|
||||||
using (var reader = new PackageArchiveReader(file.ItemSpec))
|
|
||||||
using (var nuspec = File.Create(nuspecFile))
|
|
||||||
using (var metadata = reader.GetNuspec())
|
|
||||||
{
|
|
||||||
Log.LogMessage("Creating {0}", nuspecFile);
|
|
||||||
metadata.CopyTo(nuspec);
|
|
||||||
}
|
|
||||||
|
|
||||||
Log.LogMessage("Copying {0}", nupkgFile);
|
|
||||||
File.Copy(file.ItemSpec, nupkgFile);
|
|
||||||
Log.LogMessage("Creating {0}", sha512File);
|
|
||||||
File.WriteAllText(sha512File, GetFileHash(file.ItemSpec));
|
|
||||||
}
|
|
||||||
|
|
||||||
return !Log.HasLoggedErrors;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetFileHash(string filePath)
|
|
||||||
{
|
|
||||||
byte[] hash;
|
|
||||||
|
|
||||||
using (var algorithm = new SHA512Managed())
|
|
||||||
using (var stream = File.OpenRead(filePath))
|
|
||||||
{
|
|
||||||
hash = algorithm.ComputeHash(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Convert.ToBase64String(hash);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
<UsingTask TaskName="RepoTasks.ConsolidateManifests" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.ConsolidateManifests" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.CopyPackagesToSplitFolders" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.CopyPackagesToSplitFolders" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.CreateCommonManifest" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.CreateCommonManifest" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.CreateNuGetV3FolderFeed" AssemblyFile="$(_RepoTaskAssembly)" />
|
|
||||||
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue