2016-03-07 20:24:36 +00:00
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System ;
namespace Microsoft.DotNet.Scripts
{
/// <summary>
/// Holds the configuration information for the update-dependencies script.
/// </summary>
/// <remarks>
/// The following Environment Variables are required by this script:
///
/// GITHUB_USER - The user to commit the changes as.
/// GITHUB_EMAIL - The user's email to commit the changes as.
/// GITHUB_PASSWORD - The password/personal access token of the GitHub user.
///
/// The following Environment Variables can optionally be specified:
///
2016-07-16 00:09:38 +00:00
/// 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")
/// CORECLR_VERSION_URL - The Url to get the current CoreCLR version. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/coreclr/release/1.0.0")
/// ROSLYN_VERSION_URL - The Url to get the current Roslyn version. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/roslyn/netcore1.0")
/// 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/release/1.0.0")
2016-03-07 20:24:36 +00:00
/// 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_PROJECT - The repo name under the ORIGIN and UPSTREAM owners. (ex. "cli")
/// GITHUB_UPSTREAM_BRANCH - The branch in the GitHub base repo to create the PR to. (ex. "rel/1.0.0")
2016-04-04 23:38:49 +00:00
/// GITHUB_PULL_REQUEST_NOTIFICATIONS - A semi-colon ';' separated list of GitHub users to notify on the PR.
2016-03-07 20:24:36 +00:00
/// </remarks>
public class Config
{
2016-04-11 18:51:35 +00:00
public static Config Instance { get ; } = new Config ( ) ;
2016-03-07 20:24:36 +00:00
2016-04-11 18:51:35 +00:00
private Lazy < string > _userName = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "GITHUB_USER" ) ) ;
private Lazy < string > _email = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "GITHUB_EMAIL" ) ) ;
private Lazy < string > _password = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "GITHUB_PASSWORD" ) ) ;
2016-07-16 00:09:38 +00:00
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" ) ) ;
private Lazy < string > _coreClrVersionUrl = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "CORECLR_VERSION_URL" , "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/coreclr/release/1.0.0" ) ) ;
private Lazy < string > _roslynVersionUrl = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "ROSLYN_VERSION_URL" , "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/roslyn/netcore1.0" ) ) ;
private Lazy < string > _coreSetupVersionUrl = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "CORESETUP_VERSION_URL" , "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/release/1.0.0" ) ) ;
2016-04-11 18:51:35 +00:00
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 > _gitHubUpstreamBranch = new Lazy < string > ( ( ) = > GetEnvironmentVariable ( "GITHUB_UPSTREAM_BRANCH" , "rel/1.0.0" ) ) ;
private Lazy < string [ ] > _gitHubPullRequestNotifications = new Lazy < string [ ] > ( ( ) = >
GetEnvironmentVariable ( "GITHUB_PULL_REQUEST_NOTIFICATIONS" , "" )
. Split ( new [ ] { ';' } , StringSplitOptions . RemoveEmptyEntries ) ) ;
2016-03-07 20:24:36 +00:00
2016-04-11 18:51:35 +00:00
private Config ( )
2016-03-07 20:24:36 +00:00
{
}
2016-04-11 18:51:35 +00:00
public string UserName = > _userName . Value ;
public string Email = > _email . Value ;
public string Password = > _password . Value ;
public string CoreFxVersionUrl = > _coreFxVersionUrl . Value ;
2016-06-07 17:14:14 +00:00
public string CoreClrVersionUrl = > _coreClrVersionUrl . Value ;
2016-06-03 06:03:48 +00:00
public string RoslynVersionUrl = > _roslynVersionUrl . Value ;
2016-05-26 13:41:18 +00:00
public string CoreSetupVersionUrl = > _coreSetupVersionUrl . Value ;
2016-04-11 18:51:35 +00:00
public string GitHubUpstreamOwner = > _gitHubUpstreamOwner . Value ;
public string GitHubProject = > _gitHubProject . Value ;
public string GitHubUpstreamBranch = > _gitHubUpstreamBranch . Value ;
public string [ ] GitHubPullRequestNotifications = > _gitHubPullRequestNotifications . Value ;
2016-03-07 20:24:36 +00:00
private static string GetEnvironmentVariable ( string name , string defaultValue = null )
{
string value = Environment . GetEnvironmentVariable ( name ) ;
2016-04-04 23:38:49 +00:00
if ( value = = null )
2016-03-07 20:24:36 +00:00
{
value = defaultValue ;
}
2016-04-04 23:38:49 +00:00
if ( value = = null )
2016-03-07 20:24:36 +00:00
{
2016-07-16 00:09:38 +00:00
throw new InvalidOperationException ( $"Can't find environment variable '{name}'." ) ;
2016-03-07 20:24:36 +00:00
}
return value ;
}
}
}