parameters.cake 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using System.Xml.Linq;
  2. using System.Linq;
  3. public class Parameters
  4. {
  5. public string Configuration { get; private set; }
  6. public bool SkipTests { get; private set; }
  7. public string MainRepo { get; private set; }
  8. public string MasterBranch { get; private set; }
  9. public string ReleasePlatform { get; private set; }
  10. public string ReleaseConfiguration { get; private set; }
  11. public string MSBuildSolution { get; private set; }
  12. public bool IsLocalBuild { get; private set; }
  13. public bool IsRunningOnUnix { get; private set; }
  14. public bool IsRunningOnWindows { get; private set; }
  15. public bool IsRunningOnAppVeyor { get; private set; }
  16. public bool IsRunningOnAzure { get; private set; }
  17. public bool IsPullRequest { get; private set; }
  18. public bool IsMainRepo { get; private set; }
  19. public bool IsMasterBranch { get; private set; }
  20. public bool IsTagged { get; private set; }
  21. public bool IsReleasable { get; private set; }
  22. public bool IsMyGetRelease { get; private set; }
  23. public bool IsNuGetRelease { get; private set; }
  24. public string Version { get; private set; }
  25. public DirectoryPath ArtifactsDir { get; private set; }
  26. public DirectoryPath NugetRoot { get; private set; }
  27. public DirectoryPath ZipRoot { get; private set; }
  28. public DirectoryPath BinRoot { get; private set; }
  29. public string DirSuffix { get; private set; }
  30. public DirectoryPathCollection BuildDirs { get; private set; }
  31. public string FileZipSuffix { get; private set; }
  32. public FilePath ZipCoreArtifacts { get; private set; }
  33. public FilePath ZipNuGetArtifacts { get; private set; }
  34. public DirectoryPath ZipSourceControlCatalogDesktopDirs { get; private set; }
  35. public FilePath ZipTargetControlCatalogDesktopDirs { get; private set; }
  36. public Parameters(ICakeContext context)
  37. {
  38. var buildSystem = context.BuildSystem();
  39. // ARGUMENTS
  40. Configuration = context.Argument("configuration", "Release");
  41. SkipTests = context.HasArgument("skip-tests");
  42. // CONFIGURATION
  43. MainRepo = "AvaloniaUI/Avalonia";
  44. MasterBranch = "master";
  45. ReleaseConfiguration = "Release";
  46. MSBuildSolution = "./dirs.proj";
  47. // PARAMETERS
  48. IsLocalBuild = buildSystem.IsLocalBuild;
  49. IsRunningOnUnix = context.IsRunningOnUnix();
  50. IsRunningOnWindows = context.IsRunningOnWindows();
  51. IsRunningOnAppVeyor = buildSystem.AppVeyor.IsRunningOnAppVeyor;
  52. IsRunningOnAzure = buildSystem.IsRunningOnTFS;
  53. IsPullRequest = buildSystem.AppVeyor.Environment.PullRequest.IsPullRequest;
  54. IsMainRepo = StringComparer.OrdinalIgnoreCase.Equals(MainRepo, buildSystem.AppVeyor.Environment.Repository.Name);
  55. IsMasterBranch = StringComparer.OrdinalIgnoreCase.Equals(MasterBranch, buildSystem.AppVeyor.Environment.Repository.Branch);
  56. IsTagged = buildSystem.AppVeyor.Environment.Repository.Tag.IsTag
  57. && !string.IsNullOrWhiteSpace(buildSystem.AppVeyor.Environment.Repository.Tag.Name);
  58. IsReleasable = StringComparer.OrdinalIgnoreCase.Equals(ReleaseConfiguration, Configuration);
  59. IsMyGetRelease = !IsTagged && IsReleasable;
  60. // VERSION
  61. Version = context.Argument("force-nuget-version", GetVersion());
  62. if (IsRunningOnAppVeyor)
  63. {
  64. string tagVersion = null;
  65. if (IsTagged)
  66. {
  67. var tag = buildSystem.AppVeyor.Environment.Repository.Tag.Name;
  68. var nugetReleasePrefix = "nuget-release-";
  69. IsNuGetRelease = IsTagged && IsReleasable && tag.StartsWith(nugetReleasePrefix);
  70. if(IsNuGetRelease)
  71. tagVersion = tag.Substring(nugetReleasePrefix.Length);
  72. }
  73. if(tagVersion != null)
  74. {
  75. Version = tagVersion;
  76. }
  77. else
  78. {
  79. // Use AssemblyVersion with Build as version
  80. Version += "-build" + context.EnvironmentVariable("APPVEYOR_BUILD_NUMBER") + "-beta";
  81. }
  82. }
  83. else if (IsRunningOnAzure)
  84. {
  85. // Use AssemblyVersion with Build as version
  86. Version += "-build" + context.EnvironmentVariable("BUILD_BUILDID") + "-beta";
  87. }
  88. // DIRECTORIES
  89. ArtifactsDir = (DirectoryPath)context.Directory("./artifacts");
  90. NugetRoot = ArtifactsDir.Combine("nuget");
  91. ZipRoot = ArtifactsDir.Combine("zip");
  92. BinRoot = ArtifactsDir.Combine("bin");
  93. BuildDirs = context.GetDirectories("**/bin") + context.GetDirectories("**/obj");
  94. DirSuffix = Configuration;
  95. FileZipSuffix = Version + ".zip";
  96. ZipCoreArtifacts = ZipRoot.CombineWithFilePath("Avalonia-" + FileZipSuffix);
  97. ZipNuGetArtifacts = ZipRoot.CombineWithFilePath("Avalonia-NuGet-" + FileZipSuffix);
  98. ZipSourceControlCatalogDesktopDirs = (DirectoryPath)context.Directory("./samples/ControlCatalog.Desktop/bin/" + DirSuffix + "/net461");
  99. ZipTargetControlCatalogDesktopDirs = ZipRoot.CombineWithFilePath("ControlCatalog.Desktop-" + FileZipSuffix);
  100. }
  101. private static string GetVersion()
  102. {
  103. var xdoc = XDocument.Load("./build/SharedVersion.props");
  104. return xdoc.Descendants().First(x => x.Name.LocalName == "Version").Value;
  105. }
  106. }