Add core-setup to update-dependencies.

Update-dependencies will now update all the shared framework and host dependencies in CLI.
This commit is contained in:
Eric Erhardt 2016-05-26 08:41:18 -05:00
parent 8e1b587d34
commit 06ec7ddf47
2 changed files with 37 additions and 6 deletions

View file

@ -19,6 +19,7 @@ namespace Microsoft.DotNet.Scripts
/// The following Environment Variables can optionally be specified: /// The following Environment Variables can optionally be specified:
/// ///
/// COREFX_VERSION_URL - The Url to get the current CoreFx package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0/Latest_Packages.txt") /// COREFX_VERSION_URL - The Url to get the current CoreFx package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0/Latest_Packages.txt")
/// CORESETUP_VERSION_URL - The Url to get the current dotnet/core-setup package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/master/Latest_Packages.txt")
/// GITHUB_ORIGIN_OWNER - The owner of the GitHub fork to push the commit and create the PR from. (ex. "dotnet-bot") /// GITHUB_ORIGIN_OWNER - The owner of the GitHub fork to push the commit and create the PR from. (ex. "dotnet-bot")
/// GITHUB_UPSTREAM_OWNER - The owner of the GitHub base repo to create the PR to. (ex. "dotnet") /// GITHUB_UPSTREAM_OWNER - The owner of the GitHub base repo to create the PR to. (ex. "dotnet")
/// GITHUB_PROJECT - The repo name under the ORIGIN and UPSTREAM owners. (ex. "cli") /// GITHUB_PROJECT - The repo name under the ORIGIN and UPSTREAM owners. (ex. "cli")
@ -34,6 +35,7 @@ namespace Microsoft.DotNet.Scripts
private Lazy<string> _password = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PASSWORD")); private Lazy<string> _password = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PASSWORD"));
private Lazy<string> _coreFxVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("COREFX_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0/Latest_Packages.txt")); private Lazy<string> _coreFxVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("COREFX_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0/Latest_Packages.txt"));
private Lazy<string> _coreSetupVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("CORESETUP_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/master/Latest_Packages.txt"));
private Lazy<string> _gitHubOriginOwner; private Lazy<string> _gitHubOriginOwner;
private Lazy<string> _gitHubUpstreamOwner = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_UPSTREAM_OWNER", "dotnet")); private Lazy<string> _gitHubUpstreamOwner = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_UPSTREAM_OWNER", "dotnet"));
private Lazy<string> _gitHubProject = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PROJECT", "cli")); private Lazy<string> _gitHubProject = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PROJECT", "cli"));
@ -51,6 +53,7 @@ namespace Microsoft.DotNet.Scripts
public string Email => _email.Value; public string Email => _email.Value;
public string Password => _password.Value; public string Password => _password.Value;
public string CoreFxVersionUrl => _coreFxVersionUrl.Value; public string CoreFxVersionUrl => _coreFxVersionUrl.Value;
public string CoreSetupVersionUrl => _coreSetupVersionUrl.Value;
public string GitHubOriginOwner => _gitHubOriginOwner.Value; public string GitHubOriginOwner => _gitHubOriginOwner.Value;
public string GitHubUpstreamOwner => _gitHubUpstreamOwner.Value; public string GitHubUpstreamOwner => _gitHubUpstreamOwner.Value;
public string GitHubProject => _gitHubProject.Value; public string GitHubProject => _gitHubProject.Value;

View file

@ -32,6 +32,7 @@ namespace Microsoft.DotNet.Scripts
List<DependencyInfo> dependencyInfos = c.GetDependencyInfos(); List<DependencyInfo> dependencyInfos = c.GetDependencyInfos();
dependencyInfos.Add(CreateDependencyInfo("CoreFx", Config.Instance.CoreFxVersionUrl).Result); dependencyInfos.Add(CreateDependencyInfo("CoreFx", Config.Instance.CoreFxVersionUrl).Result);
dependencyInfos.Add(CreateDependencyInfo("CoreSetup", Config.Instance.CoreSetupVersionUrl).Result);
return c.Success(); return c.Success();
} }
@ -74,7 +75,7 @@ namespace Microsoft.DotNet.Scripts
}; };
} }
[Target(nameof(ReplaceProjectJson), nameof(ReplaceCrossGen))] [Target(nameof(ReplaceProjectJson), nameof(ReplaceDependencyVersions))]
public static BuildTargetResult ReplaceVersions(BuildTargetContext c) => c.Success(); public static BuildTargetResult ReplaceVersions(BuildTargetContext c) => c.Success();
/// <summary> /// <summary>
@ -187,17 +188,21 @@ namespace Microsoft.DotNet.Scripts
} }
/// <summary> /// <summary>
/// Replaces version number that is hard-coded in the CrossGen script. /// Replaces version numbers that are hard-coded in DependencyVersions.cs.
/// </summary> /// </summary>
[Target] [Target]
public static BuildTargetResult ReplaceCrossGen(BuildTargetContext c) public static BuildTargetResult ReplaceDependencyVersions(BuildTargetContext c)
{ {
ReplaceFileContents(@"build_projects\shared-build-targets-utils\DependencyVersions.cs", compileTargetsContent => ReplaceFileContents(@"build_projects\shared-build-targets-utils\DependencyVersions.cs", fileContents =>
{ {
DependencyInfo coreFXInfo = c.GetCoreFXDependency(); DependencyInfo coreFXInfo = c.GetCoreFXDependency();
Regex regex = new Regex(@"CoreCLRVersion = ""(?<version>\d.\d.\d)-(?<release>.*)"";"); DependencyInfo coreSetupInfo = c.GetCoreSetupDependency();
return regex.ReplaceGroupValue(compileTargetsContent, "release", coreFXInfo.NewReleaseVersion); fileContents = ReplaceDependencyVersion(fileContents, coreFXInfo, "CoreCLRVersion", "Microsoft.NETCore.Runtime.CoreCLR");
fileContents = ReplaceDependencyVersion(fileContents, coreSetupInfo, "SharedFrameworkVersion", "Microsoft.NETCore.App");
fileContents = ReplaceDependencyVersion(fileContents, coreSetupInfo, "SharedHostVersion", "Microsoft.NETCore.DotNetHost");
return fileContents;
}); });
return c.Success(); return c.Success();
@ -208,6 +213,29 @@ namespace Microsoft.DotNet.Scripts
return c.GetDependencyInfos().Single(d => d.Name == "CoreFx"); return c.GetDependencyInfos().Single(d => d.Name == "CoreFx");
} }
private static DependencyInfo GetCoreSetupDependency(this BuildTargetContext c)
{
return c.GetDependencyInfos().Single(d => d.Name == "CoreSetup");
}
private static string ReplaceDependencyVersion(string fileContents, DependencyInfo dependencyInfo, string dependencyPropertyName, string packageId)
{
Regex regex = new Regex($@"{dependencyPropertyName} = ""(?<version>.*)"";");
string newVersion = dependencyInfo
.NewVersions
.FirstOrDefault(p => p.Id == packageId)
?.Version
.ToNormalizedString();
if (string.IsNullOrEmpty(newVersion))
{
throw new InvalidOperationException($"Could not find package version information for '{packageId}'");
}
return regex.ReplaceGroupValue(fileContents, "version", newVersion);
}
private static void ReplaceFileContents(string repoRelativePath, Func<string, string> replacement) private static void ReplaceFileContents(string repoRelativePath, Func<string, string> replacement)
{ {
string fullPath = Path.Combine(Dirs.RepoRoot, repoRelativePath); string fullPath = Path.Combine(Dirs.RepoRoot, repoRelativePath);