From 4582256e7ad537e315c5aa8f16bf049350d2de41 Mon Sep 17 00:00:00 2001 From: MichaelSimons Date: Thu, 16 Dec 2021 02:29:27 +0000 Subject: [PATCH 1/2] Add logic to convert internal repo uris in version.details.xml --- ...ourceBuildIntermediateNupkgDependencies.cs | 38 +++++++++++++++++++ .../tools/SourceBuildArcadeTarball.targets | 4 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs index 59f7eb49919..1217d166aae 100644 --- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs +++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs @@ -3,6 +3,7 @@ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; +using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; @@ -21,6 +22,11 @@ public class Tarball_ReadSourceBuildIntermediateNupkgDependencies : Task [Required] public string SourceBuildIntermediateNupkgPrefix { get; set; } + /// + /// Convert any internal repo references to the public GitHub repos. + /// + public bool ConvertInternalRepos { get; set; } + /// /// The intermediate nupkg RID to use if any RID-specific intermediate nupkgs are required. /// If this parameter isn't specified, RID-specific intermediate nupkgs can't be used and @@ -88,6 +94,11 @@ XName CreateQualifiedName(string plainName) string dependencyVersion = d.Attribute("Version")?.Value; string uri = d.Element(CreateQualifiedName("Uri"))?.Value; + if (ConvertInternalRepos) + { + uri = ConvertInternalRepo(uri); + } + string sha = d.Element(CreateQualifiedName("Sha"))?.Value; string sourceBuildRepoName = sourceBuildElement.Attribute("RepoName")?.Value; @@ -137,5 +148,32 @@ XName CreateQualifiedName(string plainName) return !Log.HasLoggedErrors; } + + private string ConvertInternalRepo(string uri) + { + if (uri.StartsWith("https://dev.azure.com", StringComparison.OrdinalIgnoreCase)) + { + string[] repoParts = uri.Substring(uri.LastIndexOf('/')).Split('-', 2); + + if (repoParts.Length != 2) + { + Log.LogError($"Repo '{uri}' does not end with the expected - format"); + return null; + } + + string org = repoParts[0]; + string repo = repoParts[1]; + + // The internal Nuget.Client repo has suffix which needs to be accounted for. + if (uri.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase)) + { + repo = repo.Substring(0, repo.Length - 8); + } + + uri = $"https://github.com/{org}/{repo}"; + } + + return uri; + } } } diff --git a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets index 1717371dc87..9a49c349924 100644 --- a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets +++ b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets @@ -19,6 +19,7 @@ $(TarballRootDir)src/ $(TarballRootDir)git-info/ quiet + true + SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)" + ConvertInternalRepos="$(ConvertInternalRepos)"> From 6e467b43033aefd1af39ddcbf625ef30d5440e7f Mon Sep 17 00:00:00 2001 From: MichaelSimons Date: Thu, 16 Dec 2021 18:31:15 +0000 Subject: [PATCH 2/2] code review updates --- .../Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs index 1217d166aae..9b6365dfccd 100644 --- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs +++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs @@ -165,9 +165,10 @@ private string ConvertInternalRepo(string uri) string repo = repoParts[1]; // The internal Nuget.Client repo has suffix which needs to be accounted for. - if (uri.EndsWith("-Trusted", StringComparison.OrdinalIgnoreCase)) + const string trustedSuffix = "-Trusted"; + if (uri.EndsWith(trustedSuffix, StringComparison.OrdinalIgnoreCase)) { - repo = repo.Substring(0, repo.Length - 8); + repo = repo.Substring(0, repo.Length - trustedSuffix.Length); } uri = $"https://github.com/{org}/{repo}";