namespace ReleaseBuilder.Build; public static partial class Command { /// /// Implementation of the git push command /// private static class GitPush { /// /// Tags the release and pushes it to the repository /// /// The base git dir /// The release info /// A task that completes when the push is done public static async Task TagAndPush(string baseDir, ReleaseInfo releaseInfo) { // Write the published version to a file File.WriteAllText(Path.Combine(baseDir, "ReleaseBuilder", "build_version.txt"), releaseInfo.Version.ToString()); // Add modified files await ProcessHelper.Execute(new[] { "git", "add", "ReleaseBuilder/build_version.txt", "changelog.txt" }, workingDirectory: baseDir); // Make a commit await ProcessHelper.Execute(new[] { "git", "commit", "-m", $"Version bump to v{releaseInfo.Version}-{releaseInfo.ReleaseName}", "-m", "You can download this build from: ", "-m", $"Binaries: https://updates.duplicati.com/{releaseInfo.Channel}/", "-m", $"Signature file: https://updates.duplicati.com/{releaseInfo.Channel}/{releaseInfo.ReleaseName}.signatures.zip" }, workingDirectory: baseDir); // And tag the release await ProcessHelper.Execute(new[] { "git", "tag", $"v{releaseInfo.Version}-{releaseInfo.ReleaseName}", }, workingDirectory: baseDir); // Then push the release await ProcessHelper.Execute(new[] { "git", "push", "--tags" }, workingDirectory: baseDir); } } }