parameters.cake 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. public class Parameters
  2. {
  3. public string Target { get; private set; }
  4. public string Platform { get; private set; }
  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 AssemblyInfoPath { get; private set; }
  10. public string ReleasePlatform { get; private set; }
  11. public string ReleaseConfiguration { get; private set; }
  12. public string MSBuildSolution { get; private set; }
  13. public string XBuildSolution { get; private set; }
  14. public bool IsPlatformAnyCPU { get; private set; }
  15. public bool IsPlatformX86 { get; private set; }
  16. public bool IsPlatformX64 { get; private set; }
  17. public bool IsLocalBuild { get; private set; }
  18. public bool IsRunningOnUnix { get; private set; }
  19. public bool IsRunningOnWindows { get; private set; }
  20. public bool IsRunningOnAppVeyor { get; private set; }
  21. public bool IsPullRequest { get; private set; }
  22. public bool IsMainRepo { get; private set; }
  23. public bool IsMasterBranch { get; private set; }
  24. public bool IsTagged { get; private set; }
  25. public bool IsReleasable { get; private set; }
  26. public bool IsMyGetRelease { get; private set; }
  27. public bool IsNuGetRelease { get; private set; }
  28. public string Version { get; private set; }
  29. public DirectoryPath ArtifactsDir { get; private set; }
  30. public DirectoryPath NugetRoot { get; private set; }
  31. public DirectoryPath ZipRoot { get; private set; }
  32. public DirectoryPath BinRoot { get; private set; }
  33. public DirectoryPath DesignerTestsRoot { get; private set; }
  34. public string DirSuffix { get; private set; }
  35. public string DirSuffixIOS { get; private set; }
  36. public DirectoryPathCollection BuildDirs { get; private set; }
  37. public string FileZipSuffix { get; private set; }
  38. public FilePath ZipCoreArtifacts { get; private set; }
  39. public DirectoryPath ZipSourceControlCatalogDesktopDirs { get; private set; }
  40. public FilePath ZipTargetControlCatalogDesktopDirs { get; private set; }
  41. public Parameters(ICakeContext context)
  42. {
  43. var buildSystem = context.BuildSystem();
  44. // ARGUMENTS
  45. Target = context.Argument("target", "Default");
  46. Platform = context.Argument("platform", "Any CPU");
  47. Configuration = context.Argument("configuration", "Release");
  48. SkipTests = context.HasArgument("skip-tests");
  49. // CONFIGURATION
  50. MainRepo = "AvaloniaUI/Avalonia";
  51. MasterBranch = "master";
  52. AssemblyInfoPath = context.File("./src/Shared/SharedAssemblyInfo.cs");
  53. ReleasePlatform = "Any CPU";
  54. ReleaseConfiguration = "Release";
  55. MSBuildSolution = "./Avalonia.sln";
  56. XBuildSolution = "./Avalonia.XBuild.sln";
  57. // PARAMETERS
  58. IsPlatformAnyCPU = StringComparer.OrdinalIgnoreCase.Equals(Platform, "Any CPU");
  59. IsPlatformX86 = StringComparer.OrdinalIgnoreCase.Equals(Platform, "x86");
  60. IsPlatformX64 = StringComparer.OrdinalIgnoreCase.Equals(Platform, "x64");
  61. IsLocalBuild = buildSystem.IsLocalBuild;
  62. IsRunningOnUnix = context.IsRunningOnUnix();
  63. IsRunningOnWindows = context.IsRunningOnWindows();
  64. IsRunningOnAppVeyor = buildSystem.AppVeyor.IsRunningOnAppVeyor;
  65. IsPullRequest = buildSystem.AppVeyor.Environment.PullRequest.IsPullRequest;
  66. IsMainRepo = StringComparer.OrdinalIgnoreCase.Equals(MainRepo, buildSystem.AppVeyor.Environment.Repository.Name);
  67. IsMasterBranch = StringComparer.OrdinalIgnoreCase.Equals(MasterBranch, buildSystem.AppVeyor.Environment.Repository.Branch);
  68. IsTagged = buildSystem.AppVeyor.Environment.Repository.Tag.IsTag
  69. && !string.IsNullOrWhiteSpace(buildSystem.AppVeyor.Environment.Repository.Tag.Name);
  70. IsReleasable = StringComparer.OrdinalIgnoreCase.Equals(ReleasePlatform, Platform)
  71. && StringComparer.OrdinalIgnoreCase.Equals(ReleaseConfiguration, Configuration);
  72. IsMyGetRelease = !IsTagged && IsReleasable;
  73. // VERSION
  74. Version = context.Argument("force-nuget-version", context.ParseAssemblyInfo(AssemblyInfoPath).AssemblyVersion);
  75. if (IsRunningOnAppVeyor)
  76. {
  77. string tagVersion = null;
  78. if (IsTagged)
  79. {
  80. var tag = buildSystem.AppVeyor.Environment.Repository.Tag.Name;
  81. var nugetReleasePrefix = "nuget-release-";
  82. IsNuGetRelease = IsTagged && IsReleasable && tag.StartsWith(nugetReleasePrefix);
  83. if(IsNuGetRelease)
  84. tagVersion = tag.Substring(nugetReleasePrefix.Length);
  85. }
  86. if(tagVersion != null)
  87. {
  88. Version = tagVersion;
  89. }
  90. else
  91. {
  92. // Use AssemblyVersion with Build as version
  93. Version += "-build" + context.EnvironmentVariable("APPVEYOR_BUILD_NUMBER") + "-beta";
  94. }
  95. }
  96. // DIRECTORIES
  97. ArtifactsDir = (DirectoryPath)context.Directory("./artifacts");
  98. NugetRoot = ArtifactsDir.Combine("nuget");
  99. ZipRoot = ArtifactsDir.Combine("zip");
  100. BinRoot = ArtifactsDir.Combine("bin");
  101. DesignerTestsRoot = ArtifactsDir.Combine("designer-tests");
  102. BuildDirs = context.GetDirectories("**/bin") + context.GetDirectories("**/obj");
  103. DirSuffix = Configuration;
  104. DirSuffixIOS = "iPhone" + "/" + Configuration;
  105. FileZipSuffix = Version + ".zip";
  106. ZipCoreArtifacts = ZipRoot.CombineWithFilePath("Avalonia-" + FileZipSuffix);
  107. ZipSourceControlCatalogDesktopDirs = (DirectoryPath)context.Directory("./samples/ControlCatalog.Desktop/bin/" + DirSuffix + "/net461");
  108. ZipTargetControlCatalogDesktopDirs = ZipRoot.CombineWithFilePath("ControlCatalog.Desktop-" + FileZipSuffix);
  109. }
  110. }