NuGetPackageSource.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright (c) .NET Foundation. All rights reserved.
  2. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
  3. using System;
  4. using System.Linq;
  5. namespace Cli.FunctionalTests
  6. {
  7. public class NuGetPackageSource
  8. {
  9. public static NuGetPackageSource None { get; } = new NuGetPackageSource
  10. {
  11. Name = nameof(None),
  12. SourceArgumentLazy = new Lazy<string>(string.Empty),
  13. };
  14. public static NuGetPackageSource NuGetOrg { get; } = new NuGetPackageSource
  15. {
  16. Name = nameof(NuGetOrg),
  17. SourceArgumentLazy = new Lazy<string>("--source https://api.nuget.org/v3/index.json"),
  18. };
  19. public static NuGetPackageSource DotNetCore { get; } = new NuGetPackageSource
  20. {
  21. Name = nameof(DotNetCore),
  22. SourceArgumentLazy = new Lazy<string>("--source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json"),
  23. };
  24. public static NuGetPackageSource EnvironmentVariable { get; } = new NuGetPackageSource
  25. {
  26. Name = nameof(EnvironmentVariable),
  27. SourceArgumentLazy = new Lazy<string>(() => GetSourceArgumentFromEnvironment()),
  28. };
  29. public static NuGetPackageSource EnvironmentVariableAndNuGetOrg { get; } = new NuGetPackageSource
  30. {
  31. Name = nameof(EnvironmentVariableAndNuGetOrg),
  32. SourceArgumentLazy = new Lazy<string>(() => string.Join(" ", EnvironmentVariable.SourceArgument, NuGetOrg.SourceArgument)),
  33. };
  34. private NuGetPackageSource() { }
  35. public string Name { get; private set; }
  36. public string SourceArgument => SourceArgumentLazy.Value;
  37. private Lazy<string> SourceArgumentLazy { get; set; }
  38. public override string ToString() => Name;
  39. private static string GetSourceArgumentFromEnvironment()
  40. {
  41. var sourceString = Environment.GetEnvironmentVariable("NUGET_PACKAGE_SOURCE") ??
  42. throw new InvalidOperationException("Environment variable NUGET_PACKAGE_SOURCE is required but not set");
  43. // Split on pipe and remove blank entries
  44. var sources = sourceString.Split('|').Where(s => !string.IsNullOrWhiteSpace(s));
  45. return string.Join(" ", sources.Select(s => $"--source {s}"));
  46. }
  47. }
  48. }