mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
Add title, body and draft release flag.
Also included the release notes in the release body. Switched check to check against the tag instead of the title.
This commit is contained in:
@@ -89,35 +89,39 @@ namespace Squirrel.CommandLine.Sync
|
||||
if (releases.Length == 0)
|
||||
throw new Exception("There are no nupkg's in the releases directory to upload");
|
||||
|
||||
var ver = releases.Select(r => r.Version).Max();
|
||||
if (ver == null)
|
||||
var ver = Enumerable.MaxBy(releases, x => x.Version);
|
||||
if(ver == null)
|
||||
throw new Exception("There are no nupkg's in the releases directory to upload");
|
||||
var semVer = ver.Version;
|
||||
|
||||
Log.Info($"Preparing to upload latest local release to GitHub");
|
||||
|
||||
var newReleaseReq = new NewRelease(ver.ToString()) {
|
||||
Body = "TODO", // TODO, this should use the release notes from the release, if they exist
|
||||
Draft = true,
|
||||
Prerelease = ver.HasMetadata || ver.IsPrerelease,
|
||||
Name = ver.ToString(),
|
||||
|
||||
var newReleaseReq = new NewRelease(semVer.ToString()) {
|
||||
Body = _options.body + "\r\n" + ver.GetReleaseNotes(releaseDirectoryInfo.FullName),
|
||||
Draft = _options.draft,
|
||||
Prerelease = semVer.HasMetadata || semVer.IsPrerelease,
|
||||
Name = string.IsNullOrWhiteSpace(_options.name)
|
||||
? semVer.ToString()
|
||||
: _options.name,
|
||||
};
|
||||
|
||||
Log.Info($"Creating draft release titled '{ver.ToString()}'");
|
||||
Log.Info($"Creating draft release titled '{semVer.ToString()}'");
|
||||
|
||||
var existingReleases = await client.Repository.Release.GetAll(repoOwner, repoName);
|
||||
if (existingReleases.Any(r => r.Name == ver.ToString())) {
|
||||
throw new Exception($"There is already an existing release titled '{ver}'. Please delete this release or choose a new version number.");
|
||||
if (existingReleases.Any(r => r.TagName == semVer.ToString())) {
|
||||
throw new Exception($"There is already an existing release titled '{semVer}'. Please delete this release or choose a new version number.");
|
||||
}
|
||||
|
||||
var release = await client.Repository.Release.Create(repoOwner, repoName, newReleaseReq);
|
||||
|
||||
// locate files to upload
|
||||
var files = releaseDirectoryInfo.GetFiles("*", SearchOption.TopDirectoryOnly);
|
||||
var msiFile = files.Where(f => f.FullName.EndsWith(".msi", StringComparison.InvariantCultureIgnoreCase)).SingleOrDefault();
|
||||
var msiFile = files.SingleOrDefault(f => f.FullName.EndsWith(".msi", StringComparison.InvariantCultureIgnoreCase));
|
||||
var setupFile = files.Where(f => f.FullName.EndsWith("Setup.exe", StringComparison.InvariantCultureIgnoreCase))
|
||||
.ContextualSingle("release directory", "Setup.exe file");
|
||||
|
||||
var releasesToUpload = releases.Where(x => x.Version == ver).ToArray();
|
||||
var releasesToUpload = releases.Where(x => x.Version == semVer).ToArray();
|
||||
MemoryStream releasesFileToUpload = new MemoryStream();
|
||||
ReleaseEntry.WriteReleaseFile(releasesToUpload, releasesFileToUpload);
|
||||
var releasesBytes = releasesFileToUpload.ToArray();
|
||||
|
||||
@@ -85,12 +85,18 @@ namespace Squirrel.CommandLine
|
||||
public string repoUrl { get; private set; }
|
||||
public string token { get; private set; }
|
||||
public bool pre { get; private set; }
|
||||
public bool draft { get; private set; }
|
||||
public string name { get; private set; }
|
||||
public string body { get; private set; }
|
||||
|
||||
public SyncGithubOptions()
|
||||
{
|
||||
Add("repoUrl=", "Full url to the github repository\nexample: 'https://github.com/myname/myrepo'", v => repoUrl = v);
|
||||
Add("token=", "OAuth token to use as login credentials", v => token = v);
|
||||
Add("pre", "Download pre-release instead of stable", v => pre = true);
|
||||
Add("pre", "Download pre-release instead of stable", _ => pre = true);
|
||||
Add("draft", "(up only) Mark release as draft", _ => draft = true);
|
||||
Add("name=", "(up only) Name of the release", v => name = v);
|
||||
Add("body=", "(up only) Body of the release, will be written before the release notes.", v => body = v);
|
||||
}
|
||||
|
||||
public override void Validate()
|
||||
|
||||
Reference in New Issue
Block a user