using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEditor; using UnityEngine; namespace Beyond { #if UNITY_EDITOR using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; public class Prebuild : IPreprocessBuildWithReport { public int callbackOrder { get { return 0; } } public void SaveVersion() { BuildVersionScriptable bv = new BuildVersionScriptable(); //bv.version = v; bv.Update(); AssetDatabase.DeleteAsset("Assets/Resources/Build.asset"); AssetDatabase.CreateAsset(bv, "Assets/Resources/Build.asset"); AssetDatabase.SaveAssets(); //PlayerSettings.iOS.buildNumber = v; } public void UpdateProjectVersion() { var bv = Resources.Load("Build"); //bv.Update(); PlayerSettings.iOS.buildNumber = bv.version; } public string ProcessVersion(string v) { if (!String.IsNullOrEmpty(v)) { int id = v.IndexOf(':'); if (id > 0) { v = v.Substring(id+1); } id = v.IndexOf('M'); if (id > 0) { v = v.Substring(0, v.IndexOf('M')); } } return v; } public void OnPreprocessBuild(BuildReport report) { Debug.Log("MyCustomBuildProcessor.OnPreprocessBuild for target " + report.summary.platform + " at path " + report.summary.outputPath); /* var result = ExecuteProcessTerminal("svnversion -c"); if (!String.IsNullOrEmpty(result)) { SaveVersion(ProcessVersion(result)); } */ SaveVersion(); UpdateProjectVersion(); } private string ExecuteProcessTerminal(string argument) { string output = ""; try { UnityEngine.Debug.Log("============== Start Executing [" + argument + "] ==============="); ProcessStartInfo startInfo = new ProcessStartInfo("/bin/bash") { WorkingDirectory = "/Users/marcin/projects/beYond", UseShellExecute = false, RedirectStandardOutput = true }; Process myProcess = new Process { StartInfo = startInfo }; //myProcess.StartInfo.Arguments = argument; myProcess.StartInfo.Arguments = " -c \"" + argument + " \""; myProcess.Start(); output = myProcess.StandardOutput.ReadToEnd(); UnityEngine.Debug.Log("Result for [" + argument + "] is : \n" + output); myProcess.WaitForExit(); UnityEngine.Debug.Log("============== End ==============="); } catch (Exception e) { UnityEngine.Debug.LogError(e); } return output; } } #endif }