72 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
		
			Executable File
		
	
	
	
	
| using UnityEngine;
 | |
| using UnityEditor;
 | |
| using UnityEditor.Build;
 | |
| using UnityEditor.Build.Reporting;
 | |
| 
 | |
| namespace RebootKitEditor.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);
 | |
|         }
 | |
|     }
 | |
| } |