From 1af3a582f6d1d36bca16a3c6591fcf14e994fd2a Mon Sep 17 00:00:00 2001 From: Georg Dangl Date: Tue, 7 Aug 2018 20:34:16 +0200 Subject: [PATCH] Add prerelease option --- CHANGELOG.md | 3 ++ src/Nuke.GitHub/GitHubTasks.Generated.cs | 47 ++++++++++++++++++++++- src/Nuke.GitHub/GitHubTasks.cs | 3 +- src/Nuke.GitHub/MetaData/GitHubTasks.json | 7 ++++ 4 files changed, 58 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19bd3f8..20eac52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to **Nuke.GitHub** are documented here. +## v1.2.1: +- Add option to mark releases as `Prerelease` + ## v1.2.0: - Update to NUKE 0.6.0 diff --git a/src/Nuke.GitHub/GitHubTasks.Generated.cs b/src/Nuke.GitHub/GitHubTasks.Generated.cs index 7d33a81..7e8bb7e 100644 --- a/src/Nuke.GitHub/GitHubTasks.Generated.cs +++ b/src/Nuke.GitHub/GitHubTasks.Generated.cs @@ -2,9 +2,10 @@ // Distributed under the MIT License. // https://github.com/nuke-build/nuke/blob/master/LICENSE -// Generated with Nuke.CodeGeneration, Version: 0.4.0 [CommitSha: c494ebb7]. +// Generated with Nuke.CodeGeneration, Version: 0.6.0 [CommitSha: 5a428f0d]. using JetBrains.Annotations; +using Newtonsoft.Json; using Nuke.Common; using Nuke.Common.Execution; using Nuke.Common.Tooling; @@ -41,6 +42,8 @@ public partial class GitHubReleaseSettings : ToolSettings public virtual string RepositoryOwner { get; internal set; } ///

The name of the repository

public virtual string RepositoryName { get; internal set; } + ///

Whether this is a pre-release

+ public virtual bool? Prerelease { get; internal set; } = false; protected override void AssertValid() { base.AssertValid(); @@ -184,6 +187,48 @@ public static GitHubReleaseSettings ResetRepositoryName(this GitHubReleaseSettin return toolSettings; } #endregion + #region Prerelease + ///

Sets .

Whether this is a pre-release

+ [Pure] + public static GitHubReleaseSettings SetPrerelease(this GitHubReleaseSettings toolSettings, bool? prerelease) + { + toolSettings = toolSettings.NewInstance(); + toolSettings.Prerelease = prerelease; + return toolSettings; + } + ///

Resets .

Whether this is a pre-release

+ [Pure] + public static GitHubReleaseSettings ResetPrerelease(this GitHubReleaseSettings toolSettings) + { + toolSettings = toolSettings.NewInstance(); + toolSettings.Prerelease = null; + return toolSettings; + } + ///

Enables .

Whether this is a pre-release

+ [Pure] + public static GitHubReleaseSettings EnablePrerelease(this GitHubReleaseSettings toolSettings) + { + toolSettings = toolSettings.NewInstance(); + toolSettings.Prerelease = true; + return toolSettings; + } + ///

Disables .

Whether this is a pre-release

+ [Pure] + public static GitHubReleaseSettings DisablePrerelease(this GitHubReleaseSettings toolSettings) + { + toolSettings = toolSettings.NewInstance(); + toolSettings.Prerelease = false; + return toolSettings; + } + ///

Toggles .

Whether this is a pre-release

+ [Pure] + public static GitHubReleaseSettings TogglePrerelease(this GitHubReleaseSettings toolSettings) + { + toolSettings = toolSettings.NewInstance(); + toolSettings.Prerelease = !toolSettings.Prerelease; + return toolSettings; + } + #endregion } #endregion } diff --git a/src/Nuke.GitHub/GitHubTasks.cs b/src/Nuke.GitHub/GitHubTasks.cs index bbd1e0b..d809fd8 100644 --- a/src/Nuke.GitHub/GitHubTasks.cs +++ b/src/Nuke.GitHub/GitHubTasks.cs @@ -27,7 +27,8 @@ public static async Task PublishRelease(GitHubReleaseSettings settings) TargetCommitish = settings.CommitSha, Name = releaseTag, Body = settings.ReleaseNotes, - Draft = true + Draft = true, + Prerelease = settings.Prerelease ?? false }; var releaseCreationResult = await client.Repository.Release.Create(settings.RepositoryOwner, settings.RepositoryName, newRelease); diff --git a/src/Nuke.GitHub/MetaData/GitHubTasks.json b/src/Nuke.GitHub/MetaData/GitHubTasks.json index 8d0b8c6..02f8afd 100644 --- a/src/Nuke.GitHub/MetaData/GitHubTasks.json +++ b/src/Nuke.GitHub/MetaData/GitHubTasks.json @@ -11,6 +11,7 @@ "dataClasses": [ { "name": "GitHubReleaseSettings", + "extensionMethods": true, "properties": [ { "name": "ArtifactPaths", @@ -51,6 +52,12 @@ "type": "string", "assertion": "NotNull", "help": "The name of the repository" + }, + { + "name": "Prerelease", + "type": "bool", + "default": "false", + "help": "Whether this is a pre-release" } ] }