Conditionally Create Release (#8)

This commit is contained in:
Matt Parker
2025-11-15 16:15:43 +10:00
committed by GitHub
parent c2928fbd2d
commit cb8887cbd6
6 changed files with 70 additions and 5 deletions

View File

@@ -18,7 +18,11 @@ public class CreateGithubRelease(IPipelineContext pipelineContext) : IStep
var credentials = new Credentials(token);
github.Credentials = credentials;
var version = NuGetVersion.Parse("0.1.1");
var versionFile = await PipelineFileHelper.GitRootDirectory.GetFile("./src/SharpIDE.Godot/version.txt");
if (versionFile.Exists is false) throw new FileNotFoundException(versionFile.FullName);
var versionText = await File.ReadAllTextAsync(versionFile.FullName, cancellationToken);
var version = NuGetVersion.Parse(versionText);
var versionString = version.ToNormalizedString();
var releaseTag = $"v{versionString}";

View File

@@ -1,5 +1,50 @@
#:package Octokit
#:package NuGet.Versioning
using Octokit;
using NuGet.Versioning;
var versionFile = new FileInfo(Path.Combine(GetGitRootPath(), "src", "SharpIDE.Godot", "version.txt"));
if (versionFile.Exists is false) throw new FileNotFoundException(versionFile.FullName);
var versionText = await File.ReadAllTextAsync(versionFile.FullName);
// var test = await github.Repository.Release.Get(owner, repo, newRelease.TagName);
Console.WriteLine("false");
return 0;
var version = NuGetVersion.Parse(versionText);
var versionString = version.ToNormalizedString();
var releaseTag = $"v{versionString}";
var github = new GitHubClient(new ProductHeaderValue("SharpIDE-CI"));
var owner = "MattParkerDev";
var repo = "SharpIDE";
var release = await GetReleaseOrNull();
var resultString = release is null ? "true" : "false";
Console.WriteLine(resultString);
return 0;
async Task<Release?> GetReleaseOrNull()
{
try
{
var release = await github.Repository.Release.Get(owner, repo, releaseTag);
return release;
}
catch (NotFoundException)
{
return null;
}
}
static string GetGitRootPath()
{
var currentDirectory = Directory.GetCurrentDirectory();
var gitRoot = currentDirectory;
while (!Directory.Exists(Path.Combine(gitRoot, ".git")))
{
gitRoot = Path.GetDirectoryName(gitRoot); // parent directory
if (string.IsNullOrWhiteSpace(gitRoot))
{
throw new Exception("Could not find git root");
}
}
return gitRoot;
}