72 lines
2.7 KiB
C#
Executable File
72 lines
2.7 KiB
C#
Executable File
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEngine;
|
|
|
|
namespace RebootKit.Editor.Build {
|
|
class BuildVersionBumper : IPostprocessBuildWithReport {
|
|
public int callbackOrder => 0;
|
|
|
|
public void OnPostprocessBuild(BuildReport report) {
|
|
VersionUpdater.IncrementPatch();
|
|
}
|
|
}
|
|
|
|
static class VersionUpdater {
|
|
public static bool IncrementVersion(int incrementMajor = 0, int incrementMinor = 0, int incrementPatch = 0) {
|
|
if (TryParseVersion(PlayerSettings.bundleVersion, out int major, out int minor, out int patch)) {
|
|
major += incrementMajor;
|
|
minor += incrementMinor;
|
|
patch += incrementPatch;
|
|
string newVersion = $"{major}.{minor}.{patch}";
|
|
|
|
if (SetVersion(newVersion)) {
|
|
Debug.Log($"Updated version to: {newVersion}");
|
|
} else {
|
|
Debug.LogError($"Failed to update version to: {newVersion}");
|
|
return false;
|
|
}
|
|
} else {
|
|
Debug.LogError($"Failed to parse current version: {PlayerSettings.bundleVersion}");
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool IncrementMajor() => IncrementVersion(incrementMajor: 1);
|
|
public static bool IncrementMinor() => IncrementVersion(incrementMinor: 1);
|
|
public static bool IncrementPatch() => IncrementVersion(incrementPatch: 1);
|
|
|
|
static bool SetVersion(string newVersion) {
|
|
if (!IsValidVersionFormat(newVersion)) {
|
|
Debug.LogError($"Invalid version format: {newVersion}. Expected format: maj.min.ver");
|
|
return false;
|
|
}
|
|
|
|
PlayerSettings.bundleVersion = newVersion;
|
|
Debug.Log($"Application version updated to: {newVersion}");
|
|
return true;
|
|
}
|
|
|
|
static bool IsValidVersionFormat(string version) {
|
|
string[] parts = version.Split('.');
|
|
return parts.Length == 3 && int.TryParse(parts[0], out _) && int.TryParse(parts[1], out _) && int.TryParse(parts[2], out _);
|
|
}
|
|
|
|
static bool TryParseVersion(string version, out int major, out int minor, out int patch) {
|
|
major = -1;
|
|
minor = -1;
|
|
patch = -1;
|
|
|
|
string[] parts = version.Split('.');
|
|
if (parts.Length != 3) {
|
|
return false;
|
|
}
|
|
|
|
return int.TryParse(parts[0], out major) &&
|
|
int.TryParse(parts[1], out minor) &&
|
|
int.TryParse(parts[2], out patch);
|
|
}
|
|
}
|
|
} |