An error occurred while loading the file. Please try again.
-
Bronuh authored35bdbe63
// Run this from the working directory where the solution or project to build is located.
using System.Text.RegularExpressions;
var dirPath = "/home/buildagent";
var filePath = dirPath + "/version";
var startingVer = new Version(1,4,1, 0);
var updateVersion = Args[0];
// Get current version
WriteLine($"Preparing version file at {filePath}");
Directory.CreateDirectory(dirPath);
File.Open(filePath, FileMode.OpenOrCreate).Dispose();
var text = File.ReadAllText(filePath);
WriteLine($"Version string: {text}");
if (String.IsNullOrEmpty(text))
{
WriteLine($"Version string is empty. Restoring default: {startingVer}");
text = startingVer.ToString();
File.WriteAllText(filePath, text);
}
var version = new Version(text);
int major = version.Major;
int minor = version.Minor;
int build = version.Build;
int snapshot = version.Revision == -1 ? 0 : version.Revision;
bool prereleaseBuild = false;
// Increment version if needed
switch (updateVersion)
{
case "major":
WriteLine($"Updating Major version {major} -> {++major}");
minor = 0;
build = 0;
snapshot = 0;
break;
case "minor":
WriteLine($"Updating Minor version {minor} -> {++minor}");
build = 0;
snapshot = 0;
break;
case "build":
if (snapshot == 0)
WriteLine($"Updating Build version {build} -> {++build}");
snapshot = 0;
break;
case "dev":
if (snapshot == 0)
WriteLine($"Updating Build version {build} -> {++build}");
WriteLine($"Updating snapshot version {snapshot} -> {++snapshot}");
prereleaseBuild = true;
break;
}
// Update version
var updatedVersion = new Version(major, minor, build, snapshot);
WriteLine($"Writing new version to file: {updatedVersion}");
File.WriteAllText(filePath, updatedVersion.ToString());
Props["version"] = updatedVersion.ToString(3);
// Find and backup .csproj files
var projects = Utils.ScanProjects("./", new List<string>());
Utils.CleanupBackupsFor(projects);
Utils.BackupProjects(projects);
7172737475767778798081828384
// Replace version info in .csproj files
WriteLine($"Replacing versions in .csproj files");
var allRegex = new Regex(@"(<[a-zA-Z0-9]*Version>)(.*)(<\/[a-zA-Z0-9]*Version>)");
var packageRegex = new Regex(@"(<PackageVersion>)(.*)(<\/PackageVersion>)");
var prereleaseSuffix = prereleaseBuild ? $"-dev.{updatedVersion.Revision}" : "";
foreach (var project in projects)
{
var fileContent = File.ReadAllText(project);
var modifiedContent = allRegex.Replace(fileContent, $"${{1}}{updatedVersion}${{3}}");
modifiedContent = packageRegex.Replace(modifiedContent, $"${{1}}{updatedVersion.ToString(3)}{prereleaseSuffix}${{3}}");
File.WriteAllText(project, modifiedContent);
}