Files
beyond/Assets/Scripts/Debug/Prebuild.cs
2024-11-20 15:21:28 +01:00

106 lines
3.2 KiB
C#

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<BuildVersionScriptable>("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
}